diff options
98 files changed, 9589 insertions, 9526 deletions
diff --git a/Makefile.am b/Makefile.am index 0466fcc10..7fae33e0f 100644 --- a/Makefile.am +++ b/Makefile.am | |||
@@ -15,7 +15,8 @@ EXTRA_DIST = \ | |||
15 | ABOUT-NLS \ | 15 | ABOUT-NLS \ |
16 | config.rpath \ | 16 | config.rpath \ |
17 | install-sh \ | 17 | install-sh \ |
18 | acinclude.m4 | 18 | acinclude.m4 \ |
19 | README.1st | ||
19 | 20 | ||
20 | gnunetincludedir = $(includedir)/gnunet | 21 | gnunetincludedir = $(includedir)/gnunet |
21 | gnunetinclude_HEADERS = gnunet_config.h | 22 | gnunetinclude_HEADERS = gnunet_config.h |
diff --git a/README.1st b/README.1st new file mode 100644 index 000000000..d55709779 --- /dev/null +++ b/README.1st | |||
@@ -0,0 +1,245 @@ | |||
1 | The following is a list of issues with GNUnet 0.11.0 that will need to | ||
2 | be addressed before we might consider GNUnet usable. Please keep this | ||
3 | list in mind when trying out GNUnet 0.11.0! Help would of course be | ||
4 | welcome, an estimate of how much work is needed and the main impact | ||
5 | are given with each item. | ||
6 | |||
7 | |||
8 | ats: | ||
9 | * We currently select one transport per peer, but we should allow the | ||
10 | use of multiple channels concurrently (i.e. UDP + TCP at the same | ||
11 | time). Neither ATS nor transport support this today, and this requires | ||
12 | a major change in the ATS plugins and the ATS API and the overall | ||
13 | ATS/transport logic. [6-12 PM, robustness, performance] | ||
14 | |||
15 | * The current proportional ATS heuristic does not devalue increasing | ||
16 | the number of connections once we have reached saturation point, | ||
17 | possibly resulting in an excessive number of connections. | ||
18 | [1-3 PM, performance] | ||
19 | |||
20 | * The mlp/ril ATS heuristics are highly unstable and keep crashing or | ||
21 | worse, and have horrific code quality. [3-12 PM, stability, | ||
22 | performance] | ||
23 | |||
24 | |||
25 | transport: [12-48 PM overall] | ||
26 | * We should move plugins into separate processes to break an overly | ||
27 | complicated subsystem into more manageable bits. [maintainability] | ||
28 | |||
29 | * Transport plugins are currently expected to be bi-directional; the | ||
30 | API should be changed to make them uni-directional, so we could have | ||
31 | say UDP for sending but receive via say SMTP, simply because NAT | ||
32 | punching and other transports (especially SAT) simply are not | ||
33 | bi-directional. Fragmentation and ACKs should then not be done in UDP | ||
34 | plugin but at transport level. This should result in significantly: | ||
35 | - better NAT traversal | ||
36 | - faster transports (especially with the multi-transport of ATS) | ||
37 | - simplified transport plugins | ||
38 | [stability, robustness, performance] | ||
39 | |||
40 | * Transport currently does not encrypt. This has the disadvantage that | ||
41 | TCP/UDP traffic is easily identified as "GNUnet"-traffic. It would be | ||
42 | better to_also use a simple cipher (ECDHE+AEAD) in a plugin-specific | ||
43 | way (i.e. HTTPS is fine already) to minimize information leakage, even | ||
44 | if for efficiency that cipher is is not replay-protected at this level | ||
45 | (and leave true replay-protected OTR to CORE). [privacy, censorship-resistance] | ||
46 | |||
47 | * transport's 'manipulation' functions should be moved into | ||
48 | a plugin-proxy, simplifying the code. This may have | ||
49 | modest implications for testbed due to the API change. | ||
50 | [maintainability, security] | ||
51 | |||
52 | * testcases are plenty but insufficiently systematic, the changes | ||
53 | described above should also enable us to create more systematic tests. | ||
54 | [maintainability, correctness] | ||
55 | |||
56 | |||
57 | hello: | ||
58 | * The current code may leak LAN IPs (in particular IPv6 with | ||
59 | MAC) globally. We have started to put in some privisions to tag | ||
60 | addresses as loopback/LAN/WAN, but need to systemtically ensure | ||
61 | that addresses are only propagated in a useful scope and avoid | ||
62 | leaking "sensitive" address data globally. | ||
63 | [3-6 PM, privacy] | ||
64 | |||
65 | |||
66 | core: | ||
67 | * core needs to be able to communicate to other peers whether this | ||
68 | peer is high-bandwidth or on battery and thus either great for | ||
69 | relaying or really bad for relaying. Higher-level subsystems | ||
70 | could then bias their peer selection to more capable peers -- | ||
71 | this is key for going on battery-operated systems. | ||
72 | [1-3 PM, performance] | ||
73 | |||
74 | * we currently use timestamps (based on roughly-synchronized clocks), | ||
75 | challenge-response AND sequence numbers to protect against | ||
76 | replay-protection. This is overkill, and the use of timestamps | ||
77 | causes issues on OpenWRT where RTCs are often unavailable. We | ||
78 | might want to increase the nonce for challenges and get rid of | ||
79 | the roughly-synchronized clocks assumption, at least for CORE | ||
80 | (we can't avoid it for NSE). [1-3 PM, usability] | ||
81 | |||
82 | * once transport encrypts (ECDH+AES), we should simplify CORE level | ||
83 | encryption to use ECDH+Twofish(+SHA512) instead of the current | ||
84 | ECDH+AES+Twofish double-encryption. | ||
85 | |||
86 | * Mobile peers currently allow adversaries to track their users as the | ||
87 | peer's identity does not change with locations. We need a mechanism to | ||
88 | notify a mobile peer about a location change and then systematically | ||
89 | change the public key we use depending on our location. [6-12 PM, | ||
90 | privacy] | ||
91 | |||
92 | |||
93 | cadet: | ||
94 | * needs more systematic testing, ideally with a mock up of DHT | ||
95 | and core. [6-12 PM, correctness] | ||
96 | |||
97 | * flow and congestion control implementation remains incomplete; | ||
98 | should borrow more from net2o [3-6 PM, performance] | ||
99 | |||
100 | * Various optimizations, such as key material pre-computation | ||
101 | and avoiding unnecessary DHT queries should be implemented. | ||
102 | [3-9 PM, performance] | ||
103 | |||
104 | * Once transport/core use AES/Twofish for encryption, we should | ||
105 | switch CADET to use KECCAK-AEAD. | ||
106 | |||
107 | * Generally needs more benchmarking to identify performance | ||
108 | bottlenecks tune accordingly. [3-12 PM, performance] | ||
109 | |||
110 | |||
111 | nat: | ||
112 | * many known NAT traversal methods are not yet supported | ||
113 | [6-12 PM, connectivity, usability] | ||
114 | |||
115 | |||
116 | dv: | ||
117 | * dv is still not working, but currently based on SET and we | ||
118 | should simplify the design to not use SET. [3-6 PM, connectivity, | ||
119 | correctness] | ||
120 | |||
121 | |||
122 | util: | ||
123 | * Event loop instantiations for various event loops (like glib, | ||
124 | libev, libevent, etc.) should be created (and tested). This | ||
125 | will applications to be built with GNUnet using those various | ||
126 | styles of event loop handling. General support for abstracting | ||
127 | the event loop is new in 0.11.0, we just need to make broader use | ||
128 | of it. [1-3 PM, performance, usability] | ||
129 | |||
130 | * gnunet-service-resolver should use asynchronous DNS queries if | ||
131 | available. This will ensure that name resolution is not super-slow | ||
132 | when GNUnet makes various parallel DNS queries (rare, but DNS | ||
133 | queries can happen to resolve peer IP addresses for visualization). | ||
134 | [1 PM, performance, usability] | ||
135 | |||
136 | |||
137 | dht: | ||
138 | * various minor tweaks should be explored, but first we need to | ||
139 | define and find a good benchmark to see where our performance | ||
140 | bottlenecks really are today; datacache (IO subsystem) might | ||
141 | be one of them. Here, picking appropriate transaction scopes | ||
142 | and isolation levels should be an easy way to boost performance, | ||
143 | but we also need more benchmarking logic. [3-12 PM, performance] | ||
144 | |||
145 | |||
146 | set: | ||
147 | * Current implementation is not yet Byzantine fault-tolerant | ||
148 | against stuffing attack. [1-3 PM, fault-tolerance] | ||
149 | |||
150 | |||
151 | topology: | ||
152 | * quite a few different functions are squished together in one | ||
153 | subsystem here, will require some changes to address changes | ||
154 | to transport and hello discussed above [1-3 PM, correctness] | ||
155 | |||
156 | * there are more robust known ways for maintaining a random mesh, we | ||
157 | might want to explore using those [3-6 PM, robustness] | ||
158 | |||
159 | |||
160 | fs: | ||
161 | * The service should be split into two, one for user-specific and one | ||
162 | for system-specific components [3-6 PM, security, usability] | ||
163 | |||
164 | * Currently, data and files are stored in a disassociated way, | ||
165 | resulting in search results that then fail to download; need OR/RPS | ||
166 | (see below) before we can think about fixing this properly. [6-18 PM, | ||
167 | usability] | ||
168 | |||
169 | * datastore (IO subsystem) is bad at keeping the database within the | ||
170 | quota set by the user. [1-3 PM, correctness] | ||
171 | |||
172 | |||
173 | conversation: | ||
174 | * dropping 'silence' on large-buffers during replay should be | ||
175 | used to avoid accumulating latency (standard VoIP technique, | ||
176 | crucial to get it to work for real calls) [1-3 PM, usability] | ||
177 | |||
178 | * needs ring tones [1 PM, usability] | ||
179 | |||
180 | |||
181 | gns: | ||
182 | * should support hijacking arbitrary gtlds [1 PM, usability] | ||
183 | |||
184 | * should import ".fr" ccTLD and ensure implementation performs [3-6 PM] | ||
185 | |||
186 | |||
187 | multicast: | ||
188 | * implementation currently trivial and under-tested | ||
189 | |||
190 | * still uses old NTR-style API, needs to transition to MQ API | ||
191 | |||
192 | |||
193 | psyc: | ||
194 | * implementation under-tested, database performance likely in | ||
195 | need for optimization [3-12 PM] | ||
196 | |||
197 | |||
198 | social: | ||
199 | * code in need for clean up and more systematic testing [6-12 PM] | ||
200 | |||
201 | |||
202 | rps: | ||
203 | * Open research, still experimental. [3-24 PM] | ||
204 | |||
205 | |||
206 | xolotl/lake/or: | ||
207 | * Open research, still non-existent. Symmetric cipher should | ||
208 | be CHACHA. [48-120 PM] | ||
209 | |||
210 | |||
211 | No serious problems are known in: | ||
212 | * statistics | ||
213 | * nse | ||
214 | * curl | ||
215 | * revocation | ||
216 | * scalarproduct | ||
217 | * tun | ||
218 | * testbed | ||
219 | * block | ||
220 | * fragmentation | ||
221 | * consensus | ||
222 | * secretsharing | ||
223 | * pt | ||
224 | * vpn | ||
225 | * gns | ||
226 | * gnsrecord | ||
227 | * arm | ||
228 | * dns | ||
229 | * exit | ||
230 | * identity | ||
231 | * json | ||
232 | * sq | ||
233 | * my | ||
234 | * namecache | ||
235 | * namestore | ||
236 | * testing | ||
237 | * hostlist | ||
238 | * zonemaster | ||
239 | |||
240 | |||
241 | We reserve judgement (due to lack of data) on: | ||
242 | * identity-provider | ||
243 | * rest | ||
244 | |||
245 | |||
diff --git a/configure.ac b/configure.ac index 9ab0a2316..ac00bd5d6 100644 --- a/configure.ac +++ b/configure.ac | |||
@@ -1,5 +1,5 @@ | |||
1 | # This file is part of GNUnet. | 1 | # This file is part of GNUnet. |
2 | # (C) 2001--2017 GNUnet e.V. | 2 | # (C) 2001--2018 GNUnet e.V. |
3 | # | 3 | # |
4 | # GNUnet is free software; you can redistribute it and/or modify | 4 | # GNUnet is free software; you can redistribute it and/or modify |
5 | # it under the terms of the GNU General Public License as published | 5 | # it under the terms of the GNU General Public License as published |
@@ -22,7 +22,7 @@ | |||
22 | # | 22 | # |
23 | AC_PREREQ(2.61) | 23 | AC_PREREQ(2.61) |
24 | # Checks for programs. | 24 | # Checks for programs. |
25 | AC_INIT([gnunet], [0.10.1], [bug-gnunet@gnu.org]) | 25 | AC_INIT([gnunet], [0.11.0], [bug-gnunet@gnu.org]) |
26 | 26 | ||
27 | AC_CANONICAL_TARGET | 27 | AC_CANONICAL_TARGET |
28 | AC_CANONICAL_HOST | 28 | AC_CANONICAL_HOST |
@@ -1580,8 +1580,6 @@ src/dht/Makefile | |||
1580 | src/dht/dht.conf | 1580 | src/dht/dht.conf |
1581 | src/dns/Makefile | 1581 | src/dns/Makefile |
1582 | src/dns/dns.conf | 1582 | src/dns/dns.conf |
1583 | src/dv/Makefile | ||
1584 | src/dv/dv.conf | ||
1585 | src/exit/Makefile | 1583 | src/exit/Makefile |
1586 | src/fragmentation/Makefile | 1584 | src/fragmentation/Makefile |
1587 | src/fs/Makefile | 1585 | src/fs/Makefile |
diff --git a/contrib/packages/guix/gnunet-doc.scm b/contrib/packages/guix/gnunet-doc.scm index 8e775e801..69dd90e14 100644 --- a/contrib/packages/guix/gnunet-doc.scm +++ b/contrib/packages/guix/gnunet-doc.scm | |||
@@ -141,7 +141,7 @@ | |||
141 | (for-each (lambda (f) (chmod f #o755)) | 141 | (for-each (lambda (f) (chmod f #o755)) |
142 | (find-files "po" "")) | 142 | (find-files "po" "")) |
143 | (zero? (system* "sh" "bootstrap")))) | 143 | (zero? (system* "sh" "bootstrap")))) |
144 | (replace 'build | 144 | (add-after 'build 'run-gendocs |
145 | (lambda _ | 145 | (lambda _ |
146 | (chdir "doc/documentation") | 146 | (chdir "doc/documentation") |
147 | ;;(zero? (system* "make" "dev-build")))) | 147 | ;;(zero? (system* "make" "dev-build")))) |
diff --git a/contrib/packages/guix/gnunet.scm b/contrib/packages/guix/gnunet.scm index d8eee1805..d83111292 100644 --- a/contrib/packages/guix/gnunet.scm +++ b/contrib/packages/guix/gnunet.scm | |||
@@ -107,7 +107,7 @@ | |||
107 | ("mysql" ,mysql) | 107 | ("mysql" ,mysql) |
108 | ("zlib" ,zlib) | 108 | ("zlib" ,zlib) |
109 | ("perl" ,perl) | 109 | ("perl" ,perl) |
110 | ("python" ,python) ; tests and gnunet-qr | 110 | ("python-2" ,python-2) ; tests and gnunet-qr |
111 | ("jansson" ,jansson) | 111 | ("jansson" ,jansson) |
112 | ("nss" ,nss) | 112 | ("nss" ,nss) |
113 | ("glib" ,glib "bin") | 113 | ("glib" ,glib "bin") |
diff --git a/contrib/packages/guix/guix-env.scm b/contrib/packages/guix/guix-env.scm index da4a60b73..8f45512e1 100644 --- a/contrib/packages/guix/guix-env.scm +++ b/contrib/packages/guix/guix-env.scm | |||
@@ -129,7 +129,7 @@ | |||
129 | ("mysql" ,mysql) | 129 | ("mysql" ,mysql) |
130 | ("zlib" ,zlib) | 130 | ("zlib" ,zlib) |
131 | ("perl" ,perl) | 131 | ("perl" ,perl) |
132 | ("python" ,python) ; tests and gnunet-qr | 132 | ("python-2" ,python-2) ; tests and gnunet-qr |
133 | ("jansson" ,jansson) | 133 | ("jansson" ,jansson) |
134 | ("nss" ,nss) | 134 | ("nss" ,nss) |
135 | ("glib" ,glib "bin") | 135 | ("glib" ,glib "bin") |
diff --git a/doc/Makefile.am b/doc/Makefile.am index f84c66753..ab8ccc4b5 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am | |||
@@ -2,6 +2,4 @@ | |||
2 | SUBDIRS = man doxygen documentation | 2 | SUBDIRS = man doxygen documentation |
3 | 3 | ||
4 | EXTRA_DIST = \ | 4 | EXTRA_DIST = \ |
5 | outdated-and-old-installation-instructions.txt \ | 5 | outdated-and-old-installation-instructions.txt |
6 | gnunet-c-tutorial-v1.pdf \ | ||
7 | README.txt | ||
diff --git a/doc/documentation/.gitignore b/doc/documentation/.gitignore new file mode 100644 index 000000000..2e914d9c9 --- /dev/null +++ b/doc/documentation/.gitignore | |||
@@ -0,0 +1,2 @@ | |||
1 | stamp-1 | ||
2 | version2.texi | ||
diff --git a/doc/documentation/Makefile.am b/doc/documentation/Makefile.am index 7b844b985..305e25b2a 100644 --- a/doc/documentation/Makefile.am +++ b/doc/documentation/Makefile.am | |||
@@ -76,34 +76,35 @@ dist_infoimage_DATA = \ | |||
76 | # $(top_srcdir)/%D%/images/coreutils-size-map.eps | 76 | # $(top_srcdir)/%D%/images/coreutils-size-map.eps |
77 | # dvi-local: ps-local | 77 | # dvi-local: ps-local |
78 | 78 | ||
79 | |||
79 | gnunet_tutorial_examples = \ | 80 | gnunet_tutorial_examples = \ |
80 | 001.c \ | 81 | tutorial-examples/001.c \ |
81 | 002.c \ | 82 | tutorial-examples/002.c \ |
82 | 003.c \ | 83 | tutorial-examples/003.c \ |
83 | 004.c \ | 84 | tutorial-examples/004.c \ |
84 | 005.c \ | 85 | tutorial-examples/005.c \ |
85 | 006.c \ | 86 | tutorial-examples/006.c \ |
86 | 007.c \ | 87 | tutorial-examples/007.c \ |
87 | 008.c \ | 88 | tutorial-examples/008.c \ |
88 | 009.c \ | 89 | tutorial-examples/009.c \ |
89 | 010.c \ | 90 | tutorial-examples/010.c \ |
90 | 011.c \ | 91 | tutorial-examples/011.c \ |
91 | 012.c \ | 92 | tutorial-examples/012.c \ |
92 | 013.c \ | 93 | tutorial-examples/013.c \ |
93 | 013.1.c \ | 94 | tutorial-examples/013.1.c \ |
94 | 014.c \ | 95 | tutorial-examples/014.c \ |
95 | 015.c \ | 96 | tutorial-examples/015.c \ |
96 | 016.c \ | 97 | tutorial-examples/016.c \ |
97 | 017.c \ | 98 | tutorial-examples/017.c \ |
98 | 018.c \ | 99 | tutorial-examples/018.c \ |
99 | 019.c \ | 100 | tutorial-examples/019.c \ |
100 | 020.c \ | 101 | tutorial-examples/020.c \ |
101 | 021.c \ | 102 | tutorial-examples/021.c \ |
102 | 022.c \ | 103 | tutorial-examples/022.c \ |
103 | 023.c \ | 104 | tutorial-examples/023.c \ |
104 | 024.c \ | 105 | tutorial-examples/024.c \ |
105 | 025.c \ | 106 | tutorial-examples/025.c \ |
106 | 026.c | 107 | tutorial-examples/026.c |
107 | 108 | ||
108 | info_TEXINFOS = \ | 109 | info_TEXINFOS = \ |
109 | gnunet.texi \ | 110 | gnunet.texi \ |
diff --git a/doc/documentation/chapters/contributing.texi b/doc/documentation/chapters/contributing.texi index 5844fb497..745acca77 100644 --- a/doc/documentation/chapters/contributing.texi +++ b/doc/documentation/chapters/contributing.texi | |||
@@ -65,16 +65,7 @@ URLs break in the PDF output when they contain linebreaks. | |||
65 | 65 | ||
66 | @item Do not use tab characters (see chapter 2.1 texinfo manual) | 66 | @item Do not use tab characters (see chapter 2.1 texinfo manual) |
67 | 67 | ||
68 | @item Use neutral language and third person perspective in the text | 68 | @item Write texts in the third person perspective. |
69 | |||
70 | @item So, when you refer to a user in general or addressing the user, | ||
71 | refer to (1). | ||
72 | @itemize @bullet | ||
73 | @item Unsolved exceptions for canonical reasons: When refering to Alice, | ||
74 | use "she". When refering to Bob, use "he". These are long established | ||
75 | examples and they should either be replaced (avoid Alice and Bob | ||
76 | examples when you can) or followed. | ||
77 | @end itemize | ||
78 | 69 | ||
79 | @c FIXME: This is questionable, it feels like bike shed painging to do | 70 | @c FIXME: This is questionable, it feels like bike shed painging to do |
80 | @c this for several k lines. It only helps to jump between sentences in | 71 | @c this for several k lines. It only helps to jump between sentences in |
@@ -96,7 +87,4 @@ footnote on a collected footnote-page. | |||
96 | In a 200+ pages handbook it's better to have footnotes accessible | 87 | In a 200+ pages handbook it's better to have footnotes accessible |
97 | without having to skip over to the end. | 88 | without having to skip over to the end. |
98 | 89 | ||
99 | @item Avoid unnecessary footnotes, keep the text self-explanatory and | ||
100 | in a simple language where possible/necessary. | ||
101 | |||
102 | @end itemize | 90 | @end itemize |
diff --git a/doc/documentation/chapters/developer.texi b/doc/documentation/chapters/developer.texi index 70fd7c7eb..0e06d0ac6 100644 --- a/doc/documentation/chapters/developer.texi +++ b/doc/documentation/chapters/developer.texi | |||
@@ -460,7 +460,7 @@ stacked together to construct complex buildings and it is generally easy | |||
460 | to swap one block for a different one that has the same shape. GNUnet's | 460 | to swap one block for a different one that has the same shape. GNUnet's |
461 | architecture is based on LEGOs: | 461 | architecture is based on LEGOs: |
462 | 462 | ||
463 | @c images here | 463 | @c @image{images/service_lego_block,5in,,picture of a LEGO block stack - 3 APIs as connectors upon Network Protocol on top of a Service} |
464 | 464 | ||
465 | This chapter documents the GNUnet LEGO system, also known as GNUnet's | 465 | This chapter documents the GNUnet LEGO system, also known as GNUnet's |
466 | system architecture. | 466 | system architecture. |
diff --git a/doc/documentation/chapters/philosophy.texi b/doc/documentation/chapters/philosophy.texi index 116991a6a..c8e2651c3 100644 --- a/doc/documentation/chapters/philosophy.texi +++ b/doc/documentation/chapters/philosophy.texi | |||
@@ -6,18 +6,20 @@ | |||
6 | @c for secushare, showing some of the relations and functionalities | 6 | @c for secushare, showing some of the relations and functionalities |
7 | @c of GNUnet. | 7 | @c of GNUnet. |
8 | The foremost goal of the GNUnet project is to become a widely used, | 8 | The foremost goal of the GNUnet project is to become a widely used, |
9 | reliable, open, non-discriminating, egalitarian, unfettered and | 9 | reliable, open, non-discriminating, egalitarian, unconstrained and |
10 | censorship-resistant system of free information exchange. | 10 | censorship-resistant system of free information exchange. |
11 | We value free speech above state secrets, law-enforcement or | 11 | We value free speech above state secrets, law-enforcement or |
12 | intellectual property. | 12 | intellectual property. |
13 | GNUnet is supposed to be an anarchistic network, where the only | 13 | GNUnet is supposed to be an anarchistic network, where the only |
14 | limitation for peers is that they must contribute enough back to | 14 | limitation for participants (devices or people making use of the |
15 | the network such that their resource consumption does not have | 15 | network, in the following sometimes called peers) is |
16 | a significant impact on other users. | 16 | that they must contribute enough back to the network such that |
17 | their resource consumption does not have a significant impact | ||
18 | on other users. | ||
17 | GNUnet should be more than just another file-sharing network. | 19 | GNUnet should be more than just another file-sharing network. |
18 | The plan is to offer many other services and in particular | 20 | The plan is to offer many other services and in particular |
19 | to serve as a development platform for the next generation of | 21 | to serve as a development platform for the next generation of |
20 | decentralized Internet protocols. | 22 | Internet Protocols. |
21 | 23 | ||
22 | @menu | 24 | @menu |
23 | * Design Goals:: | 25 | * Design Goals:: |
@@ -40,13 +42,15 @@ These are the core GNUnet design goals, in order of relative importance: | |||
40 | @c To footnote or not to footnote, that's the question. | 42 | @c To footnote or not to footnote, that's the question. |
41 | @footnote{This means that you you have the four essential freedoms: to run | 43 | @footnote{This means that you you have the four essential freedoms: to run |
42 | the program, to study and change the program in source code form, | 44 | the program, to study and change the program in source code form, |
43 | to redistribute exact copies, and to distribute modified versions.} | 45 | to redistribute exact copies, and to distribute modified versions. |
46 | Refer to @uref{https://www.gnu.org/philosophy/free-sw.html, https://www.gnu.org/philosophy/free-sw.html}} | ||
44 | @item GNUnet must only disclose the minimal amount of information | 47 | @item GNUnet must only disclose the minimal amount of information |
45 | necessary. | 48 | necessary. |
46 | @item GNUnet must be decentralised and survive Byzantine failures in any | 49 | @c TODO: Explain 'fully' in the terminology section. |
47 | position in the network. | 50 | @item GNUnet must be fully distributed and survive Byzantine failures |
48 | @item GNUnet must make it explicit to the user which entities must be | 51 | at any position in the network. |
49 | trustworthy when establishing secured communications. | 52 | @item GNUnet must make it explicit to the user which entities are |
53 | considered to be trustworthy when establishing secured communications. | ||
50 | @item GNUnet must use compartmentalization to protect sensitive | 54 | @item GNUnet must use compartmentalization to protect sensitive |
51 | information. | 55 | information. |
52 | @item GNUnet must be open and permit new peers to join. | 56 | @item GNUnet must be open and permit new peers to join. |
@@ -73,17 +77,17 @@ find out what is happening on the network or to disrupt operations. | |||
73 | @section Versatility | 77 | @section Versatility |
74 | 78 | ||
75 | We call GNUnet a peer-to-peer framework because we want to support many | 79 | We call GNUnet a peer-to-peer framework because we want to support many |
76 | different forms of peer-to-peer applications. GNUnet uses a plugin | 80 | different forms of peer-to-peer applications. GNUnet uses a plugin |
77 | architecture to make the system extensible and to encourage code reuse. | 81 | architecture to make the system extensible and to encourage code reuse. |
78 | While the first versions of the system only supported anonymous | 82 | While the first versions of the system only supported anonymous |
79 | file-sharing, other applications are being worked on and more will | 83 | file-sharing, other applications are being worked on and more will |
80 | hopefully follow in the future. | 84 | hopefully follow in the future. |
81 | A powerful synergy regarding anonymity services is created by a large | 85 | A powerful synergy regarding anonymity services is created by a large |
82 | community utilizing many diverse applications over the same software | 86 | community utilizing many diverse applications over the same software |
83 | infrastructure. The reason is that link encryption hides the specifics | 87 | infrastructure. The reason is that link encryption hides the specifics |
84 | of the traffic for non-participating observers. This way, anonymity can | 88 | of the traffic for non-participating observers. This way, anonymity can |
85 | get stronger with additional (GNUnet) traffic, even if the additional | 89 | get stronger with additional (GNUnet) traffic, even if the additional |
86 | traffic is not related to anonymous communication. Increasing anonymity | 90 | traffic is not related to anonymous communication. Increasing anonymity |
87 | is the primary reason why GNUnet is developed to become a peer-to-peer | 91 | is the primary reason why GNUnet is developed to become a peer-to-peer |
88 | framework where many applications share the lower layers of an | 92 | framework where many applications share the lower layers of an |
89 | increasingly complex protocol stack. | 93 | increasingly complex protocol stack. |
@@ -96,22 +100,22 @@ and a few shared libraries. | |||
96 | @section Practicality | 100 | @section Practicality |
97 | 101 | ||
98 | GNUnet allows participants to trade various amounts of security in | 102 | GNUnet allows participants to trade various amounts of security in |
99 | exchange for increased efficiency. However, it is not possible for any | 103 | exchange for increased efficiency. However, it is not possible for any |
100 | user's security and efficiency requirements to compromise the security | 104 | user's security and efficiency requirements to compromise the security |
101 | and efficiency of any other user. | 105 | and efficiency of any other user. |
102 | 106 | ||
103 | For GNUnet, efficiency is not paramount. If there is a more secure and | 107 | For GNUnet, efficiency is not paramount. If there were a more secure and |
104 | still practical approach, we would choose to take the more secure | 108 | still practical approach, we would choose to take the more secure |
105 | alternative. @command{telnet} is more efficient than @command{ssh}, yet | 109 | alternative. @command{telnet} is more efficient than @command{ssh}, yet |
106 | it is obsolete. | 110 | it is obsolete. |
107 | Hardware gets faster, and code can be optimized. Fixing security issues | 111 | Hardware gets faster, and code can be optimized. Fixing security issues |
108 | as an afterthought is much harder. | 112 | as an afterthought is much harder. |
109 | 113 | ||
110 | While security is paramount, practicability is still a requirement. | 114 | While security is paramount, practicability is still a requirement. |
111 | The most secure system is always the one that nobody can use. | 115 | The most secure system is always the one that nobody can use. |
112 | Similarly, any anonymous system that is extremely inefficient will only | 116 | Similarly, any anonymous system that is extremely inefficient will only |
113 | find few users. | 117 | find few users. |
114 | However, good anonymity requires a large and diverse user base. Since | 118 | However, good anonymity requires a large and diverse user base. Since |
115 | individual security requirements may vary, the only good solution here is | 119 | individual security requirements may vary, the only good solution here is |
116 | to allow individuals to trade-off security and efficiency. | 120 | to allow individuals to trade-off security and efficiency. |
117 | The primary challenge in allowing this is to ensure that the economic | 121 | The primary challenge in allowing this is to ensure that the economic |
@@ -154,9 +158,9 @@ The second part describes concepts specific to anonymous file-sharing. | |||
154 | @subsection Authentication | 158 | @subsection Authentication |
155 | 159 | ||
156 | Almost all peer-to-peer communications in GNUnet are between mutually | 160 | Almost all peer-to-peer communications in GNUnet are between mutually |
157 | authenticated peers. The authentication works by using ECDHE, that is a | 161 | authenticated peers. The authentication works by using ECDHE, that is a |
158 | DH (Diffie---Hellman) key exchange using ephemeral eliptic curve | 162 | DH (Diffie---Hellman) key exchange using ephemeral eliptic curve |
159 | cryptography. The ephemeral ECC (Eliptic Curve Cryptography) keys are | 163 | cryptography. The ephemeral ECC (Eliptic Curve Cryptography) keys are |
160 | signed using ECDSA (@uref{http://en.wikipedia.org/wiki/ECDSA, ECDSA}). | 164 | signed using ECDSA (@uref{http://en.wikipedia.org/wiki/ECDSA, ECDSA}). |
161 | The shared secret from ECDHE is used to create a pair of session keys | 165 | The shared secret from ECDHE is used to create a pair of session keys |
162 | @c FIXME: LOng word for HKDF | 166 | @c FIXME: LOng word for HKDF |
@@ -165,23 +169,23 @@ two peers using both 256-bit AES (Advanced Encryption Standard) | |||
165 | and 256-bit Twofish (with independently derived secret keys). | 169 | and 256-bit Twofish (with independently derived secret keys). |
166 | As only the two participating hosts know the shared secret, this | 170 | As only the two participating hosts know the shared secret, this |
167 | authenticates each packet | 171 | authenticates each packet |
168 | without requiring signatures each time. GNUnet uses SHA-512 | 172 | without requiring signatures each time. GNUnet uses SHA-512 |
169 | (Secure Hash Algorithm) hash codes to verify the integrity of messages. | 173 | (Secure Hash Algorithm) hash codes to verify the integrity of messages. |
170 | 174 | ||
171 | In GNUnet, the identity of a host is its public key. For that reason, | 175 | In GNUnet, the identity of a host is its public key. For that reason, |
172 | @c FIXME: is it clear to the average reader what a man-in-the-middle | 176 | @c FIXME: is it clear to the average reader what a man-in-the-middle |
173 | @c attack is? | 177 | @c attack is? |
174 | man-in-the-middle attacks will not break the authentication or accounting | 178 | man-in-the-middle attacks will not break the authentication or accounting |
175 | goals. Essentially, for GNUnet, the IP of the host has nothing to do with | 179 | goals. Essentially, for GNUnet, the IP of the host has nothing to do with |
176 | the identity of the host. As the public key is the only thing that truly | 180 | the identity of the host. As the public key is the only thing that truly |
177 | matters, faking an IP, a port or any other property of the underlying | 181 | matters, faking an IP, a port or any other property of the underlying |
178 | transport protocol is irrelevant. In fact, GNUnet peers can use | 182 | transport protocol is irrelevant. In fact, GNUnet peers can use |
179 | multiple IPs (IPv4 and IPv6) on multiple ports --- or even not use the | 183 | multiple IPs (IPv4 and IPv6) on multiple ports --- or even not use the |
180 | IP protocol at all (by running directly on layer 2). | 184 | IP protocol at all (by running directly on layer 2). |
181 | 185 | ||
182 | @c NOTE: For consistency we will use @code{HELLO}s throughout this Manual. | 186 | @c NOTE: For consistency we will use @code{HELLO}s throughout this Manual. |
183 | GNUnet uses a special type of message to communicate a binding between | 187 | GNUnet uses a special type of message to communicate a binding between |
184 | public (ECC) keys to their current network address. These messages are | 188 | public (ECC) keys to their current network address. These messages are |
185 | commonly called @code{HELLO}s or peer advertisements. | 189 | commonly called @code{HELLO}s or peer advertisements. |
186 | They contain the public key of the peer and its current network | 190 | They contain the public key of the peer and its current network |
187 | addresses for various transport services. | 191 | addresses for various transport services. |
@@ -191,7 +195,7 @@ peers. | |||
191 | For the UDP and TCP transport services, a network address is an IP and a | 195 | For the UDP and TCP transport services, a network address is an IP and a |
192 | port. | 196 | port. |
193 | GNUnet can also use other transports (HTTP, HTTPS, WLAN, etc.) which use | 197 | GNUnet can also use other transports (HTTP, HTTPS, WLAN, etc.) which use |
194 | various other forms of addresses. Note that any node can have many | 198 | various other forms of addresses. Note that any node can have many |
195 | different active transport services at the same time, | 199 | different active transport services at the same time, |
196 | and each of these can have a different addresses. | 200 | and each of these can have a different addresses. |
197 | Binding messages expire after at most a week (the timeout can be | 201 | Binding messages expire after at most a week (the timeout can be |
@@ -202,7 +206,7 @@ outdated advertisements. | |||
202 | A Transport Layer Abstraction for Peer-to-Peer Networks | 206 | A Transport Layer Abstraction for Peer-to-Peer Networks |
203 | Proceedings of the 3rd International Symposium on Cluster Computing | 207 | Proceedings of the 3rd International Symposium on Cluster Computing |
204 | and the Grid (GRID 2003), 2003. | 208 | and the Grid (GRID 2003), 2003. |
205 | (@uref{https://gnunet.org/git/bibliography.git/plain/docs/transport.pdf, pdf})} | 209 | (@uref{https://gnunet.org/git/bibliography.git/plain/docs/transport.pdf, https://gnunet.org/git/bibliography.git/plain/docs/transport.pdf})} |
206 | 210 | ||
207 | @cindex Accounting to Encourage Resource Sharing | 211 | @cindex Accounting to Encourage Resource Sharing |
208 | @node Accounting to Encourage Resource Sharing | 212 | @node Accounting to Encourage Resource Sharing |
@@ -218,27 +222,26 @@ with queries that are, in the worst case, multiplied by the network. | |||
218 | 222 | ||
219 | In order to ensure that freeloaders or attackers have a minimal impact on | 223 | In order to ensure that freeloaders or attackers have a minimal impact on |
220 | the network, GNUnet's file-sharing implementation tries to distinguish | 224 | the network, GNUnet's file-sharing implementation tries to distinguish |
221 | good (contributing) nodes from malicious (freeloading) nodes. In GNUnet, | 225 | good (contributing) nodes from malicious (freeloading) nodes. In GNUnet, |
222 | every file-sharing node keeps track of the behavior of every other node it | 226 | every file-sharing node keeps track of the behavior of every other node it |
223 | has been in contact with. Many requests (depending on the application) | 227 | has been in contact with. Many requests (depending on the application) |
224 | are transmitted with a priority (or importance) level. | 228 | are transmitted with a priority (or importance) level. |
225 | That priority is used to establish how important the sender believes | 229 | That priority is used to establish how important the sender believes |
226 | this request is. If a peer responds to an important request, the | 230 | this request is. If a peer responds to an important request, the |
227 | recipient will increase its trust in the responder: | 231 | recipient will increase its trust in the responder: |
228 | the responder contributed resources. | 232 | the responder contributed resources. |
229 | If a peer is too busy to answer all requests, it needs to prioritize. | 233 | If a peer is too busy to answer all requests, it needs to prioritize. |
230 | @c FIXME: 'peers to not take' -> 'peers do not take' would make more sense | 234 | For that, peers do not take the priorities of the requests received at |
231 | For that, peers to not take the priorities of the requests received at | ||
232 | face value. | 235 | face value. |
233 | First, they check how much they trust the sender, and depending on that | 236 | First, they check how much they trust the sender, and depending on that |
234 | amount of trust they assign the request a (possibly lower) effective | 237 | amount of trust they assign the request a (possibly lower) effective |
235 | priority. Then, they drop the requests with the lowest effective priority | 238 | priority. Then, they drop the requests with the lowest effective priority |
236 | to satisfy their resource constraints. This way, GNUnet's economic model | 239 | to satisfy their resource constraints. This way, GNUnet's economic model |
237 | ensures that nodes that are not currently considered to have a surplus in | 240 | ensures that nodes that are not currently considered to have a surplus in |
238 | contributions will not be served if the network load is high. | 241 | contributions will not be served if the network load is high. |
239 | @footnote{Christian Grothoff. An Excess-Based Economic Model for Resource | 242 | @footnote{Christian Grothoff. An Excess-Based Economic Model for Resource |
240 | Allocation in Peer-to-Peer Networks. Wirtschaftsinformatik, June 2003. | 243 | Allocation in Peer-to-Peer Networks. Wirtschaftsinformatik, June 2003. |
241 | (@uref{https://gnunet.org/git/bibliography.git/plain/docs/ebe.pdf, pdf})} | 244 | (@uref{https://gnunet.org/git/bibliography.git/plain/docs/ebe.pdf, https://gnunet.org/git/bibliography.git/plain/docs/ebe.pdf})} |
242 | @c 2009? | 245 | @c 2009? |
243 | 246 | ||
244 | @cindex Confidentiality | 247 | @cindex Confidentiality |
@@ -246,7 +249,7 @@ Allocation in Peer-to-Peer Networks. Wirtschaftsinformatik, June 2003. | |||
246 | @subsection Confidentiality | 249 | @subsection Confidentiality |
247 | 250 | ||
248 | Adversaries outside of GNUnet are not supposed to know what kind of | 251 | Adversaries outside of GNUnet are not supposed to know what kind of |
249 | actions a peer is involved in. Only the specific neighbor of a peer that | 252 | actions a peer is involved in. Only the specific neighbor of a peer that |
250 | is the corresponding sender or recipient of a message may know its | 253 | is the corresponding sender or recipient of a message may know its |
251 | contents, and even then application protocols may place further | 254 | contents, and even then application protocols may place further |
252 | restrictions on that knowledge. | 255 | restrictions on that knowledge. |
@@ -254,7 +257,7 @@ In order to ensure confidentiality, GNUnet uses link encryption, that is | |||
254 | each message exchanged between two peers is encrypted using a pair of | 257 | each message exchanged between two peers is encrypted using a pair of |
255 | keys only known to these two peers. | 258 | keys only known to these two peers. |
256 | Encrypting traffic like this makes any kind of traffic analysis much | 259 | Encrypting traffic like this makes any kind of traffic analysis much |
257 | harder. Naturally, for some applications, it may still be desirable if | 260 | harder. Naturally, for some applications, it may still be desirable if |
258 | even neighbors cannot determine the concrete contents of a message. | 261 | even neighbors cannot determine the concrete contents of a message. |
259 | In GNUnet, this problem is addressed by the specific application-level | 262 | In GNUnet, this problem is addressed by the specific application-level |
260 | protocols (see for example, deniability and anonymity in anonymous file | 263 | protocols (see for example, deniability and anonymity in anonymous file |
@@ -269,13 +272,13 @@ sharing). | |||
269 | @end menu | 272 | @end menu |
270 | 273 | ||
271 | Providing anonymity for users is the central goal for the anonymous | 274 | Providing anonymity for users is the central goal for the anonymous |
272 | file-sharing application. Many other design decisions follow in the | 275 | file-sharing application. Many other design decisions follow in the |
273 | footsteps of this requirement. | 276 | footsteps of this requirement. |
274 | Anonymity is never absolute. While there are various | 277 | Anonymity is never absolute. While there are various |
275 | scientific metrics@footnote{Claudia Díaz, Stefaan Seys, Joris Claessens, | 278 | scientific metrics@footnote{Claudia Díaz, Stefaan Seys, Joris Claessens, |
276 | and Bart Preneel. Towards measuring anonymity. | 279 | and Bart Preneel. Towards measuring anonymity. |
277 | 2002. | 280 | 2002. |
278 | (@uref{https://gnunet.org/git/bibliography.git/plain/docs/article-89.pdf, pdf})} | 281 | (@uref{https://gnunet.org/git/bibliography.git/plain/docs/article-89.pdf, https://gnunet.org/git/bibliography.git/plain/docs/article-89.pdf})} |
279 | that can help quantify the level of anonymity that a given mechanism | 282 | that can help quantify the level of anonymity that a given mechanism |
280 | provides, there is no such thing as complete anonymity. | 283 | provides, there is no such thing as complete anonymity. |
281 | GNUnet's file-sharing implementation allows users to select for each | 284 | GNUnet's file-sharing implementation allows users to select for each |
@@ -287,7 +290,7 @@ given in scientific metrics@footnote{likewise}, | |||
287 | it is probably the best metric available to a peer with a purely local | 290 | it is probably the best metric available to a peer with a purely local |
288 | view of the world that does not rely on unreliable external information. | 291 | view of the world that does not rely on unreliable external information. |
289 | The default anonymity level is 1, which uses anonymous routing but | 292 | The default anonymity level is 1, which uses anonymous routing but |
290 | imposes no minimal requirements on cover traffic. It is possible | 293 | imposes no minimal requirements on cover traffic. It is possible |
291 | to forego anonymity when this is not required. The anonymity level of 0 | 294 | to forego anonymity when this is not required. The anonymity level of 0 |
292 | allows GNUnet to use more efficient, non-anonymous routing. | 295 | allows GNUnet to use more efficient, non-anonymous routing. |
293 | 296 | ||
@@ -297,12 +300,12 @@ allows GNUnet to use more efficient, non-anonymous routing. | |||
297 | 300 | ||
298 | Contrary to other designs, we do not believe that users achieve strong | 301 | Contrary to other designs, we do not believe that users achieve strong |
299 | anonymity just because their requests are obfuscated by a couple of | 302 | anonymity just because their requests are obfuscated by a couple of |
300 | indirections. This is not sufficient if the adversary uses traffic | 303 | indirections. This is not sufficient if the adversary uses traffic |
301 | analysis. | 304 | analysis. |
302 | The threat model used for anonymous file sharing in GNUnet assumes that | 305 | The threat model used for anonymous file sharing in GNUnet assumes that |
303 | the adversary is quite powerful. | 306 | the adversary is quite powerful. |
304 | In particular, we assume that the adversary can see all the traffic on | 307 | In particular, we assume that the adversary can see all the traffic on |
305 | the Internet. And while we assume that the adversary | 308 | the Internet. And while we assume that the adversary |
306 | can not break our encryption, we assume that the adversary has many | 309 | can not break our encryption, we assume that the adversary has many |
307 | participating nodes in the network and that it can thus see many of the | 310 | participating nodes in the network and that it can thus see many of the |
308 | node-to-node interactions since it controls some of the nodes. | 311 | node-to-node interactions since it controls some of the nodes. |
@@ -312,10 +315,10 @@ anonymous if they can hide their actions in the traffic created by other | |||
312 | users. | 315 | users. |
313 | Hiding actions in the traffic of other users requires participating in the | 316 | Hiding actions in the traffic of other users requires participating in the |
314 | traffic, bringing back the traditional technique of using indirection and | 317 | traffic, bringing back the traditional technique of using indirection and |
315 | source rewriting. Source rewriting is required to gain anonymity since | 318 | source rewriting. Source rewriting is required to gain anonymity since |
316 | otherwise an adversary could tell if a message originated from a host by | 319 | otherwise an adversary could tell if a message originated from a host by |
317 | looking at the source address. If all packets look like they originate | 320 | looking at the source address. If all packets look like they originate |
318 | from a node, the adversary can not tell which ones originate from that | 321 | from one node, the adversary can not tell which ones originate from that |
319 | node and which ones were routed. | 322 | node and which ones were routed. |
320 | Note that in this mindset, any node can decide to break the | 323 | Note that in this mindset, any node can decide to break the |
321 | source-rewriting paradigm without violating the protocol, as this | 324 | source-rewriting paradigm without violating the protocol, as this |
@@ -336,14 +339,14 @@ This increases the efficiency of the network as we can indirect less under | |||
336 | higher load.@footnote{Krista Bennett and Christian Grothoff. | 339 | higher load.@footnote{Krista Bennett and Christian Grothoff. |
337 | GAP --- practical anonymous networking. In Proceedings of | 340 | GAP --- practical anonymous networking. In Proceedings of |
338 | Designing Privacy Enhancing Technologies, 2003. | 341 | Designing Privacy Enhancing Technologies, 2003. |
339 | (@uref{https://gnunet.org/git/bibliography.git/plain/docs/aff.pdf, pdf})} | 342 | (@uref{https://gnunet.org/git/bibliography.git/plain/docs/aff.pdf, https://gnunet.org/git/bibliography.git/plain/docs/aff.pdf})} |
340 | 343 | ||
341 | @cindex Deniability | 344 | @cindex Deniability |
342 | @node Deniability | 345 | @node Deniability |
343 | @subsection Deniability | 346 | @subsection Deniability |
344 | 347 | ||
345 | Even if the user that downloads data and the server that provides data are | 348 | Even if the user that downloads data and the server that provides data are |
346 | anonymous, the intermediaries may still be targets. In particular, if the | 349 | anonymous, the intermediaries may still be targets. In particular, if the |
347 | intermediaries can find out which queries or which content they are | 350 | intermediaries can find out which queries or which content they are |
348 | processing, a strong adversary could try to force them to censor | 351 | processing, a strong adversary could try to force them to censor |
349 | certain materials. | 352 | certain materials. |
@@ -362,14 +365,14 @@ by @command{gnunet-publish}, @command{gnunet-download}, | |||
362 | and Jussi T. Lindgren. | 365 | and Jussi T. Lindgren. |
363 | An Encoding for Censorship-Resistant Sharing. | 366 | An Encoding for Censorship-Resistant Sharing. |
364 | 2009. | 367 | 2009. |
365 | (@uref{https://gnunet.org/git/bibliography.git/plain/docs/ecrs.pdf, pdf})} | 368 | (@uref{https://gnunet.org/git/bibliography.git/plain/docs/ecrs.pdf, https://gnunet.org/git/bibliography.git/plain/docs/ecrs.pdf})} |
366 | 369 | ||
367 | @cindex Peer Identities | 370 | @cindex Peer Identities |
368 | @node Peer Identities | 371 | @node Peer Identities |
369 | @subsection Peer Identities | 372 | @subsection Peer Identities |
370 | 373 | ||
371 | Peer identities are used to identify peers in the network and are unique | 374 | Peer identities are used to identify peers in the network and are unique |
372 | for each peer. The identity for a peer is simply its public key, which is | 375 | for each peer. The identity for a peer is simply its public key, which is |
373 | generated along with a private key the peer is started for the first time. | 376 | generated along with a private key the peer is started for the first time. |
374 | While the identity is binary data, it is often expressed as ASCII string. | 377 | While the identity is binary data, it is often expressed as ASCII string. |
375 | For example, the following is a peer identity as you might see it in | 378 | For example, the following is a peer identity as you might see it in |
@@ -392,21 +395,22 @@ GNS@footnote{Matthias Wachs, Martin Schanzenbach, and Christian Grothoff. | |||
392 | A Censorship-Resistant, Privacy-Enhancing and Fully Decentralized Name | 395 | A Censorship-Resistant, Privacy-Enhancing and Fully Decentralized Name |
393 | System. In proceedings of 13th International Conference on Cryptology and | 396 | System. In proceedings of 13th International Conference on Cryptology and |
394 | Network Security (CANS 2014). 2014. | 397 | Network Security (CANS 2014). 2014. |
395 | @uref{https://gnunet.org/git/bibliography.git/plain/docs/gns2014wachs.pdf, pdf}} | 398 | @uref{https://gnunet.org/git/bibliography.git/plain/docs/gns2014wachs.pdf, https://gnunet.org/git/bibliography.git/plain/docs/gns2014wachs.pdf}} |
396 | zones are similar to those of DNS zones, but instead of a hierarchy of | 399 | zones are similar to those of DNS zones, but instead of a hierarchy of |
397 | authorities to governing their use, GNS zones are controlled by a private | 400 | authorities to governing their use, GNS zones are controlled by a private |
398 | key. | 401 | key. |
399 | When you create a record in a DNS zone, that information stored in your | 402 | When you create a record in a DNS zone, that information stored in your |
400 | nameserver. Anyone trying to resolve your domain then gets pointed | 403 | nameserver. Anyone trying to resolve your domain then gets pointed |
401 | (hopefully) by the centralised authority to your nameserver. | 404 | (hopefully) by the centralised authority to your nameserver. |
402 | Whereas GNS, being decentralised by design, stores that information in | 405 | Whereas GNS, being fully decentralized by design, stores that information |
403 | DHT. The validity of the records is assured cryptographically, by | 406 | in DHT. The validity of the records is assured cryptographically, by |
404 | signing them with the private key of the respective zone. | 407 | signing them with the private key of the respective zone. |
405 | 408 | ||
406 | Anyone trying to resolve records in a zone your domain can then verify the | 409 | Anyone trying to resolve records in a zone of your domain can then verify |
407 | signature on the records they get from the DHT and be assured that they | 410 | the signature of the records they get from the DHT and be assured that |
408 | are indeed from the respective zone. To make this work, there is a 1:1 | 411 | they are indeed from the respective zone. |
409 | correspondence between zones and their public-private key pairs. | 412 | To make this work, there is a 1:1 correspondence between zones and |
413 | their public-private key pairs. | ||
410 | So when we talk about the owner of a GNS zone, that's really the owner of | 414 | So when we talk about the owner of a GNS zone, that's really the owner of |
411 | the private key. | 415 | the private key. |
412 | And a user accessing a zone needs to somehow specify the corresponding | 416 | And a user accessing a zone needs to somehow specify the corresponding |
@@ -416,8 +420,8 @@ public key first. | |||
416 | @node Egos | 420 | @node Egos |
417 | @subsection Egos | 421 | @subsection Egos |
418 | 422 | ||
419 | Egos are your "identities" in GNUnet. Any user can assume multiple | 423 | Egos are your "identities" in GNUnet. Any user can assume multiple |
420 | identities, for example to separate their activities online. Egos can | 424 | identities, for example to separate their activities online. Egos can |
421 | correspond to pseudonyms or real-world identities. Technically, an | 425 | correspond to pseudonyms or real-world identities. Technically, an |
422 | ego is first of all a public-private key pair. | 426 | ego is first of all a public-private key pair. |
423 | 427 | ||
diff --git a/doc/documentation/gnunet.texi b/doc/documentation/gnunet.texi index 35eed54b6..049aa7120 100644 --- a/doc/documentation/gnunet.texi +++ b/doc/documentation/gnunet.texi | |||
@@ -71,10 +71,10 @@ This document is the Reference Manual for GNUnet version @value{VERSION}. | |||
71 | @menu | 71 | @menu |
72 | 72 | ||
73 | * Philosophy:: About GNUnet | 73 | * Philosophy:: About GNUnet |
74 | * Vocabulary:: Vocabulary | 74 | @c * Vocabulary:: Vocabulary |
75 | * GNUnet Installation Handbook:: How to install GNUnet | 75 | * GNUnet Installation Handbook:: How to install GNUnet |
76 | * Using GNUnet:: Using GNUnet | 76 | * Using GNUnet:: Using GNUnet |
77 | * Configuration Handbook:: Configuring GNUnet | 77 | @c * Configuration Handbook:: Configuring GNUnet |
78 | * GNUnet Contributors Handbook:: Contributing to GNUnet | 78 | * GNUnet Contributors Handbook:: Contributing to GNUnet |
79 | * GNUnet Developer Handbook:: Developing GNUnet | 79 | * GNUnet Developer Handbook:: Developing GNUnet |
80 | * GNU Free Documentation License:: The license of this manual | 80 | * GNU Free Documentation License:: The license of this manual |
@@ -103,11 +103,11 @@ Philosophy | |||
103 | * Backup of Identities and Egos:: | 103 | * Backup of Identities and Egos:: |
104 | * Revocation:: | 104 | * Revocation:: |
105 | 105 | ||
106 | Vocabulary | 106 | @c Vocabulary |
107 | 107 | @c | |
108 | * Definitions abbreviations and acronyms:: | 108 | @c * Definitions abbreviations and acronyms:: |
109 | * Words and characters:: | 109 | @c * Words and characters:: |
110 | * Technical Assumptions:: | 110 | @c * Technical Assumptions:: |
111 | 111 | ||
112 | GNUnet Installation Handbook | 112 | GNUnet Installation Handbook |
113 | 113 | ||
@@ -136,7 +136,7 @@ Using GNUnet | |||
136 | * The GNU Name System:: | 136 | * The GNU Name System:: |
137 | * Using the Virtual Public Network:: | 137 | * Using the Virtual Public Network:: |
138 | 138 | ||
139 | Configuration Handbook | 139 | @c Configuration Handbook |
140 | 140 | ||
141 | GNUnet Contributors Handbook | 141 | GNUnet Contributors Handbook |
142 | 142 | ||
@@ -191,7 +191,8 @@ GNUnet Developer Handbook | |||
191 | @include chapters/philosophy.texi | 191 | @include chapters/philosophy.texi |
192 | @c ********************************************************************* | 192 | @c ********************************************************************* |
193 | 193 | ||
194 | @include chapters/vocabulary.texi | 194 | @c WIP: |
195 | @c @include chapters/vocabulary.texi | ||
195 | 196 | ||
196 | @c ********************************************************************* | 197 | @c ********************************************************************* |
197 | @include chapters/installation.texi | 198 | @include chapters/installation.texi |
@@ -201,12 +202,14 @@ GNUnet Developer Handbook | |||
201 | @include chapters/user.texi | 202 | @include chapters/user.texi |
202 | @c ********************************************************************* | 203 | @c ********************************************************************* |
203 | 204 | ||
204 | @include chapters/configuration.texi | 205 | @c WIP: |
206 | @c @include chapters/configuration.texi | ||
205 | 207 | ||
206 | @include chapters/contributing.texi | 208 | @include chapters/contributing.texi |
207 | 209 | ||
208 | @c ********************************************************************* | 210 | @c ********************************************************************* |
209 | @include chapters/developer.texi | 211 | @include chapters/developer.texi |
212 | @c For now in its own Book: | ||
210 | @c @include gnunet-c-tutorial.texi | 213 | @c @include gnunet-c-tutorial.texi |
211 | @c ********************************************************************* | 214 | @c ********************************************************************* |
212 | 215 | ||
diff --git a/po/POTFILES.in b/po/POTFILES.in index 01c197fcd..e0654d4b4 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in | |||
@@ -316,7 +316,6 @@ src/revocation/revocation_api.c | |||
316 | src/rps/gnunet-rps.c | 316 | src/rps/gnunet-rps.c |
317 | src/rps/gnunet-service-rps.c | 317 | src/rps/gnunet-service-rps.c |
318 | src/rps/gnunet-service-rps_custommap.c | 318 | src/rps/gnunet-service-rps_custommap.c |
319 | src/rps/gnunet-service-rps_peers.c | ||
320 | src/rps/gnunet-service-rps_sampler.c | 319 | src/rps/gnunet-service-rps_sampler.c |
321 | src/rps/gnunet-service-rps_sampler_elem.c | 320 | src/rps/gnunet-service-rps_sampler_elem.c |
322 | src/rps/gnunet-service-rps_view.c | 321 | src/rps/gnunet-service-rps_view.c |
@@ -10,7 +10,7 @@ msgid "" | |||
10 | msgstr "" | 10 | msgstr "" |
11 | "Project-Id-Version: gnunet 0.10.1\n" | 11 | "Project-Id-Version: gnunet 0.10.1\n" |
12 | "Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n" | 12 | "Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n" |
13 | "POT-Creation-Date: 2017-10-20 15:14+0000\n" | 13 | "POT-Creation-Date: 2018-01-02 02:33+0100\n" |
14 | "PO-Revision-Date: 2015-03-08 16:16+0100\n" | 14 | "PO-Revision-Date: 2015-03-08 16:16+0100\n" |
15 | "Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n" | 15 | "Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n" |
16 | "Language-Team: German <translation-team-de@lists.sourceforge.net>\n" | 16 | "Language-Team: German <translation-team-de@lists.sourceforge.net>\n" |
@@ -244,14 +244,14 @@ msgid "Require valid port number for service `%s' in configuration!\n" | |||
244 | msgstr "" | 244 | msgstr "" |
245 | 245 | ||
246 | #: src/arm/gnunet-service-arm.c:430 src/transport/plugin_transport_tcp.c:1176 | 246 | #: src/arm/gnunet-service-arm.c:430 src/transport/plugin_transport_tcp.c:1176 |
247 | #: src/transport/tcp_service_legacy.c:613 src/util/client.c:480 | 247 | #: src/transport/tcp_service_legacy.c:613 src/util/client.c:505 |
248 | #: src/util/service.c:682 | 248 | #: src/util/service.c:682 |
249 | #, c-format | 249 | #, c-format |
250 | msgid "UNIXPATH `%s' too long, maximum length is %llu\n" | 250 | msgid "UNIXPATH `%s' too long, maximum length is %llu\n" |
251 | msgstr "" | 251 | msgstr "" |
252 | 252 | ||
253 | #: src/arm/gnunet-service-arm.c:434 src/transport/plugin_transport_tcp.c:1180 | 253 | #: src/arm/gnunet-service-arm.c:434 src/transport/plugin_transport_tcp.c:1180 |
254 | #: src/transport/tcp_service_legacy.c:617 src/util/client.c:485 | 254 | #: src/transport/tcp_service_legacy.c:617 src/util/client.c:510 |
255 | #: src/util/service.c:687 | 255 | #: src/util/service.c:687 |
256 | #, c-format | 256 | #, c-format |
257 | msgid "Using `%s' instead\n" | 257 | msgid "Using `%s' instead\n" |
@@ -353,14 +353,131 @@ msgstr "" | |||
353 | msgid "Initiating shutdown as requested by client.\n" | 353 | msgid "Initiating shutdown as requested by client.\n" |
354 | msgstr "" | 354 | msgstr "" |
355 | 355 | ||
356 | #: src/ats-tests/ats-testing-log.c:837 | 356 | #: src/ats/gnunet-ats-solver-eval.c:2781 src/ats/gnunet-ats-solver-eval.c:2822 |
357 | msgid "Stop logging\n" | 357 | #, c-format |
358 | msgstr "Protokollierung stoppen\n" | 358 | msgid "" |
359 | "Could not load quota for network `%s': `%s', assigning default bandwidth " | ||
360 | "%llu\n" | ||
361 | msgstr "" | ||
359 | 362 | ||
360 | #: src/ats-tests/ats-testing-log.c:892 | 363 | #: src/ats/gnunet-ats-solver-eval.c:2799 |
364 | #, c-format | ||
365 | msgid "" | ||
366 | "No outbound quota configured for network `%s', assigning default bandwidth " | ||
367 | "%llu\n" | ||
368 | msgstr "" | ||
369 | |||
370 | #: src/ats/gnunet-ats-solver-eval.c:2840 | ||
371 | #, c-format | ||
372 | msgid "" | ||
373 | "No outbound quota configure for network `%s', assigning default bandwidth " | ||
374 | "%llu\n" | ||
375 | msgstr "" | ||
376 | |||
377 | #: src/ats/gnunet-ats-solver-eval.c:3294 src/ats-tests/gnunet-solver-eval.c:939 | ||
378 | msgid "solver to use" | ||
379 | msgstr "" | ||
380 | |||
381 | #: src/ats/gnunet-ats-solver-eval.c:3299 src/ats-tests/gnunet-solver-eval.c:945 | ||
382 | #: src/ats-tests/gnunet-solver-eval.c:950 | ||
383 | msgid "experiment to use" | ||
384 | msgstr "" | ||
385 | |||
386 | #: src/ats/gnunet-ats-solver-eval.c:3306 | ||
387 | msgid "print logging" | ||
388 | msgstr "" | ||
389 | |||
390 | #: src/ats/gnunet-ats-solver-eval.c:3311 | ||
391 | msgid "save logging to disk" | ||
392 | msgstr "" | ||
393 | |||
394 | #: src/ats/gnunet-ats-solver-eval.c:3316 | ||
395 | msgid "disable normalization" | ||
396 | msgstr "" | ||
397 | |||
398 | #: src/ats/gnunet-service-ats_plugins.c:304 | ||
399 | #, c-format | ||
400 | msgid "" | ||
401 | "Could not load %s quota for network `%s': `%s', assigning default bandwidth " | ||
402 | "%llu\n" | ||
403 | msgstr "" | ||
404 | |||
405 | #: src/ats/gnunet-service-ats_plugins.c:314 | ||
406 | #, c-format | ||
407 | msgid "%s quota configured for network `%s' is %llu\n" | ||
408 | msgstr "" | ||
409 | |||
410 | #: src/ats/gnunet-service-ats_plugins.c:359 | ||
411 | #, c-format | ||
412 | msgid "" | ||
413 | "No %s-quota configured for network `%s', assigning default bandwidth %llu\n" | ||
414 | msgstr "" | ||
415 | |||
416 | #: src/ats/gnunet-service-ats_plugins.c:451 | ||
361 | #, fuzzy, c-format | 417 | #, fuzzy, c-format |
362 | msgid "Start logging `%s'\n" | 418 | msgid "Failed to initialize solver `%s'!\n" |
363 | msgstr "Collection `%s' begonnen.\n" | 419 | msgstr "SQLite Datenbank konnte nicht initialisiert werden.\n" |
420 | |||
421 | #: src/ats/plugin_ats_mlp.c:1274 | ||
422 | msgid "Problem size too large, cannot allocate memory!\n" | ||
423 | msgstr "" | ||
424 | |||
425 | #: src/ats/plugin_ats_mlp.c:1869 | ||
426 | #, fuzzy, c-format | ||
427 | msgid "Adding address for peer `%s' multiple times\n" | ||
428 | msgstr "Adresse des Knotens `%s' konnte nicht ermittelt werden.\n" | ||
429 | |||
430 | #: src/ats/plugin_ats_mlp.c:1913 | ||
431 | #, fuzzy, c-format | ||
432 | msgid "Updating address property for peer `%s' %p not added before\n" | ||
433 | msgstr "Adresse des Knotens `%s' konnte nicht ermittelt werden.\n" | ||
434 | |||
435 | #: src/ats/plugin_ats_mlp.c:2475 | ||
436 | msgid "" | ||
437 | "MLP solver is not optimizing for anything, changing to feasibility check\n" | ||
438 | msgstr "" | ||
439 | |||
440 | #: src/ats/plugin_ats_mlp.c:2515 src/ats/plugin_ats_mlp.c:2532 | ||
441 | #: src/ats/plugin_ats_mlp.c:2564 src/ats/plugin_ats_mlp.c:2582 | ||
442 | #: src/ats/plugin_ats_mlp.c:2601 src/ats/plugin_ats_proportional.c:1141 | ||
443 | #: src/ats/plugin_ats_ril.c:2612 src/ats/plugin_ats_ril.c:2629 | ||
444 | #: src/ats/plugin_ats_ril.c:2646 src/ats/plugin_ats_ril.c:2663 | ||
445 | #: src/ats/plugin_ats_ril.c:2680 src/ats/plugin_ats_ril.c:2697 | ||
446 | #: src/ats/plugin_ats_ril.c:2714 src/ats/plugin_ats_ril.c:2731 | ||
447 | #, fuzzy, c-format | ||
448 | msgid "Invalid %s configuration %f \n" | ||
449 | msgstr "Konfiguration konnte nicht aus %s geladen werden\n" | ||
450 | |||
451 | #: src/ats/plugin_ats_mlp.c:2670 | ||
452 | #, c-format | ||
453 | msgid "" | ||
454 | "Adjusting inconsistent outbound quota configuration for network `%s', is " | ||
455 | "%llu must be at least %llu\n" | ||
456 | msgstr "" | ||
457 | |||
458 | #: src/ats/plugin_ats_mlp.c:2679 | ||
459 | #, c-format | ||
460 | msgid "" | ||
461 | "Adjusting inconsistent inbound quota configuration for network `%s', is %llu " | ||
462 | "must be at least %llu\n" | ||
463 | msgstr "" | ||
464 | |||
465 | #: src/ats/plugin_ats_mlp.c:2689 | ||
466 | #, c-format | ||
467 | msgid "" | ||
468 | "Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n" | ||
469 | msgstr "" | ||
470 | |||
471 | #: src/ats/plugin_ats_mlp.c:2698 | ||
472 | #, c-format | ||
473 | msgid "" | ||
474 | "Adjusting inbound quota configuration for network `%s' from %llu to %.0f\n" | ||
475 | msgstr "" | ||
476 | |||
477 | #: src/ats/plugin_ats_proportional.c:1164 | ||
478 | #, fuzzy, c-format | ||
479 | msgid "Invalid %s configuration %f\n" | ||
480 | msgstr " gconfig\tGTK Konfiguration\n" | ||
364 | 481 | ||
365 | #: src/ats-tests/ats-testing.c:422 | 482 | #: src/ats-tests/ats-testing.c:422 |
366 | #, c-format | 483 | #, c-format |
@@ -372,6 +489,15 @@ msgstr "" | |||
372 | msgid "Failed to connect master peer [%u] with slave [%u]\n" | 489 | msgid "Failed to connect master peer [%u] with slave [%u]\n" |
373 | msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" | 490 | msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" |
374 | 491 | ||
492 | #: src/ats-tests/ats-testing-log.c:837 | ||
493 | msgid "Stop logging\n" | ||
494 | msgstr "Protokollierung stoppen\n" | ||
495 | |||
496 | #: src/ats-tests/ats-testing-log.c:892 | ||
497 | #, fuzzy, c-format | ||
498 | msgid "Start logging `%s'\n" | ||
499 | msgstr "Collection `%s' begonnen.\n" | ||
500 | |||
375 | #: src/ats-tests/gnunet-ats-sim.c:90 | 501 | #: src/ats-tests/gnunet-ats-sim.c:90 |
376 | #, c-format | 502 | #, c-format |
377 | msgid "" | 503 | msgid "" |
@@ -379,15 +505,6 @@ msgid "" | |||
379 | "= %u KiB/s\n" | 505 | "= %u KiB/s\n" |
380 | msgstr "" | 506 | msgstr "" |
381 | 507 | ||
382 | #: src/ats-tests/gnunet-solver-eval.c:939 src/ats/gnunet-ats-solver-eval.c:3294 | ||
383 | msgid "solver to use" | ||
384 | msgstr "" | ||
385 | |||
386 | #: src/ats-tests/gnunet-solver-eval.c:945 | ||
387 | #: src/ats-tests/gnunet-solver-eval.c:950 src/ats/gnunet-ats-solver-eval.c:3299 | ||
388 | msgid "experiment to use" | ||
389 | msgstr "" | ||
390 | |||
391 | #: src/ats-tool/gnunet-ats.c:307 | 508 | #: src/ats-tool/gnunet-ats.c:307 |
392 | #, c-format | 509 | #, c-format |
393 | msgid "%u address resolutions had a timeout\n" | 510 | msgid "%u address resolutions had a timeout\n" |
@@ -505,123 +622,6 @@ msgstr "" | |||
505 | msgid "Print information about ATS state" | 622 | msgid "Print information about ATS state" |
506 | msgstr "Informationen über andere GNUnet Knoten ausgeben." | 623 | msgstr "Informationen über andere GNUnet Knoten ausgeben." |
507 | 624 | ||
508 | #: src/ats/gnunet-ats-solver-eval.c:2781 src/ats/gnunet-ats-solver-eval.c:2822 | ||
509 | #, c-format | ||
510 | msgid "" | ||
511 | "Could not load quota for network `%s': `%s', assigning default bandwidth " | ||
512 | "%llu\n" | ||
513 | msgstr "" | ||
514 | |||
515 | #: src/ats/gnunet-ats-solver-eval.c:2799 | ||
516 | #, c-format | ||
517 | msgid "" | ||
518 | "No outbound quota configured for network `%s', assigning default bandwidth " | ||
519 | "%llu\n" | ||
520 | msgstr "" | ||
521 | |||
522 | #: src/ats/gnunet-ats-solver-eval.c:2840 | ||
523 | #, c-format | ||
524 | msgid "" | ||
525 | "No outbound quota configure for network `%s', assigning default bandwidth " | ||
526 | "%llu\n" | ||
527 | msgstr "" | ||
528 | |||
529 | #: src/ats/gnunet-ats-solver-eval.c:3306 | ||
530 | msgid "print logging" | ||
531 | msgstr "" | ||
532 | |||
533 | #: src/ats/gnunet-ats-solver-eval.c:3311 | ||
534 | msgid "save logging to disk" | ||
535 | msgstr "" | ||
536 | |||
537 | #: src/ats/gnunet-ats-solver-eval.c:3316 | ||
538 | msgid "disable normalization" | ||
539 | msgstr "" | ||
540 | |||
541 | #: src/ats/gnunet-service-ats_plugins.c:304 | ||
542 | #, c-format | ||
543 | msgid "" | ||
544 | "Could not load %s quota for network `%s': `%s', assigning default bandwidth " | ||
545 | "%llu\n" | ||
546 | msgstr "" | ||
547 | |||
548 | #: src/ats/gnunet-service-ats_plugins.c:314 | ||
549 | #, c-format | ||
550 | msgid "%s quota configured for network `%s' is %llu\n" | ||
551 | msgstr "" | ||
552 | |||
553 | #: src/ats/gnunet-service-ats_plugins.c:359 | ||
554 | #, c-format | ||
555 | msgid "" | ||
556 | "No %s-quota configured for network `%s', assigning default bandwidth %llu\n" | ||
557 | msgstr "" | ||
558 | |||
559 | #: src/ats/gnunet-service-ats_plugins.c:451 | ||
560 | #, fuzzy, c-format | ||
561 | msgid "Failed to initialize solver `%s'!\n" | ||
562 | msgstr "SQLite Datenbank konnte nicht initialisiert werden.\n" | ||
563 | |||
564 | #: src/ats/plugin_ats_mlp.c:1274 | ||
565 | msgid "Problem size too large, cannot allocate memory!\n" | ||
566 | msgstr "" | ||
567 | |||
568 | #: src/ats/plugin_ats_mlp.c:1869 | ||
569 | #, fuzzy, c-format | ||
570 | msgid "Adding address for peer `%s' multiple times\n" | ||
571 | msgstr "Adresse des Knotens `%s' konnte nicht ermittelt werden.\n" | ||
572 | |||
573 | #: src/ats/plugin_ats_mlp.c:1913 | ||
574 | #, fuzzy, c-format | ||
575 | msgid "Updating address property for peer `%s' %p not added before\n" | ||
576 | msgstr "Adresse des Knotens `%s' konnte nicht ermittelt werden.\n" | ||
577 | |||
578 | #: src/ats/plugin_ats_mlp.c:2475 | ||
579 | msgid "" | ||
580 | "MLP solver is not optimizing for anything, changing to feasibility check\n" | ||
581 | msgstr "" | ||
582 | |||
583 | #: src/ats/plugin_ats_mlp.c:2515 src/ats/plugin_ats_mlp.c:2532 | ||
584 | #: src/ats/plugin_ats_mlp.c:2564 src/ats/plugin_ats_mlp.c:2582 | ||
585 | #: src/ats/plugin_ats_mlp.c:2601 src/ats/plugin_ats_proportional.c:1141 | ||
586 | #: src/ats/plugin_ats_ril.c:2612 src/ats/plugin_ats_ril.c:2629 | ||
587 | #: src/ats/plugin_ats_ril.c:2646 src/ats/plugin_ats_ril.c:2663 | ||
588 | #: src/ats/plugin_ats_ril.c:2680 src/ats/plugin_ats_ril.c:2697 | ||
589 | #: src/ats/plugin_ats_ril.c:2714 src/ats/plugin_ats_ril.c:2731 | ||
590 | #, fuzzy, c-format | ||
591 | msgid "Invalid %s configuration %f \n" | ||
592 | msgstr "Konfiguration konnte nicht aus %s geladen werden\n" | ||
593 | |||
594 | #: src/ats/plugin_ats_mlp.c:2670 | ||
595 | #, c-format | ||
596 | msgid "" | ||
597 | "Adjusting inconsistent outbound quota configuration for network `%s', is " | ||
598 | "%llu must be at least %llu\n" | ||
599 | msgstr "" | ||
600 | |||
601 | #: src/ats/plugin_ats_mlp.c:2679 | ||
602 | #, c-format | ||
603 | msgid "" | ||
604 | "Adjusting inconsistent inbound quota configuration for network `%s', is %llu " | ||
605 | "must be at least %llu\n" | ||
606 | msgstr "" | ||
607 | |||
608 | #: src/ats/plugin_ats_mlp.c:2689 | ||
609 | #, c-format | ||
610 | msgid "" | ||
611 | "Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n" | ||
612 | msgstr "" | ||
613 | |||
614 | #: src/ats/plugin_ats_mlp.c:2698 | ||
615 | #, c-format | ||
616 | msgid "" | ||
617 | "Adjusting inbound quota configuration for network `%s' from %llu to %.0f\n" | ||
618 | msgstr "" | ||
619 | |||
620 | #: src/ats/plugin_ats_proportional.c:1164 | ||
621 | #, fuzzy, c-format | ||
622 | msgid "Invalid %s configuration %f\n" | ||
623 | msgstr " gconfig\tGTK Konfiguration\n" | ||
624 | |||
625 | #: src/auction/gnunet-auction-create.c:163 | 625 | #: src/auction/gnunet-auction-create.c:163 |
626 | msgid "description of the item to be sold" | 626 | msgid "description of the item to be sold" |
627 | msgstr "" | 627 | msgstr "" |
@@ -668,58 +668,58 @@ msgstr "Hilfetext" | |||
668 | msgid "Invalid peer ID `%s'\n" | 668 | msgid "Invalid peer ID `%s'\n" |
669 | msgstr "Ungültige Antwort auf `%s'.\n" | 669 | msgstr "Ungültige Antwort auf `%s'.\n" |
670 | 670 | ||
671 | #: src/cadet/gnunet-cadet.c:702 | 671 | #: src/cadet/gnunet-cadet.c:703 |
672 | #, fuzzy, c-format | 672 | #, fuzzy, c-format |
673 | msgid "Invalid tunnel owner `%s'\n" | 673 | msgid "Invalid tunnel owner `%s'\n" |
674 | msgstr "Ungültiger Parameter: `%s'\n" | 674 | msgstr "Ungültiger Parameter: `%s'\n" |
675 | 675 | ||
676 | #: src/cadet/gnunet-cadet.c:775 | 676 | #: src/cadet/gnunet-cadet.c:776 |
677 | msgid "Extra arguments are not applicable in combination with this option.\n" | 677 | msgid "Extra arguments are not applicable in combination with this option.\n" |
678 | msgstr "" | 678 | msgstr "" |
679 | 679 | ||
680 | #: src/cadet/gnunet-cadet.c:866 | 680 | #: src/cadet/gnunet-cadet.c:867 |
681 | #, fuzzy, c-format | 681 | #, fuzzy, c-format |
682 | msgid "Invalid target `%s'\n" | 682 | msgid "Invalid target `%s'\n" |
683 | msgstr "Ungültiger Parameter: `%s'\n" | 683 | msgstr "Ungültiger Parameter: `%s'\n" |
684 | 684 | ||
685 | #: src/cadet/gnunet-cadet.c:903 | 685 | #: src/cadet/gnunet-cadet.c:904 |
686 | #, fuzzy | 686 | #, fuzzy |
687 | msgid "No action requested\n" | 687 | msgid "No action requested\n" |
688 | msgstr " Verbindung fehlgeschlagen\n" | 688 | msgstr " Verbindung fehlgeschlagen\n" |
689 | 689 | ||
690 | #: src/cadet/gnunet-cadet.c:928 | 690 | #: src/cadet/gnunet-cadet.c:929 |
691 | #, fuzzy | 691 | #, fuzzy |
692 | msgid "Provide information about a particular connection" | 692 | msgid "Provide information about a particular connection" |
693 | msgstr "Informationen über andere GNUnet Knoten ausgeben." | 693 | msgstr "Informationen über andere GNUnet Knoten ausgeben." |
694 | 694 | ||
695 | #: src/cadet/gnunet-cadet.c:933 | 695 | #: src/cadet/gnunet-cadet.c:934 |
696 | msgid "Activate echo mode" | 696 | msgid "Activate echo mode" |
697 | msgstr "" | 697 | msgstr "" |
698 | 698 | ||
699 | #: src/cadet/gnunet-cadet.c:938 | 699 | #: src/cadet/gnunet-cadet.c:939 |
700 | msgid "Dump debug information to STDERR" | 700 | msgid "Dump debug information to STDERR" |
701 | msgstr "" | 701 | msgstr "" |
702 | 702 | ||
703 | #: src/cadet/gnunet-cadet.c:944 | 703 | #: src/cadet/gnunet-cadet.c:945 |
704 | msgid "Listen for connections using a shared secret among sender and recipient" | 704 | msgid "Listen for connections using a shared secret among sender and recipient" |
705 | msgstr "" | 705 | msgstr "" |
706 | 706 | ||
707 | #: src/cadet/gnunet-cadet.c:951 | 707 | #: src/cadet/gnunet-cadet.c:952 |
708 | #, fuzzy | 708 | #, fuzzy |
709 | msgid "Provide information about a patricular peer" | 709 | msgid "Provide information about a patricular peer" |
710 | msgstr "Informationen über andere GNUnet Knoten ausgeben." | 710 | msgstr "Informationen über andere GNUnet Knoten ausgeben." |
711 | 711 | ||
712 | #: src/cadet/gnunet-cadet.c:957 | 712 | #: src/cadet/gnunet-cadet.c:958 |
713 | #, fuzzy | 713 | #, fuzzy |
714 | msgid "Provide information about all peers" | 714 | msgid "Provide information about all peers" |
715 | msgstr "Informationen über andere GNUnet Knoten ausgeben." | 715 | msgstr "Informationen über andere GNUnet Knoten ausgeben." |
716 | 716 | ||
717 | #: src/cadet/gnunet-cadet.c:963 | 717 | #: src/cadet/gnunet-cadet.c:964 |
718 | #, fuzzy | 718 | #, fuzzy |
719 | msgid "Provide information about a particular tunnel" | 719 | msgid "Provide information about a particular tunnel" |
720 | msgstr "Informationen über andere GNUnet Knoten ausgeben." | 720 | msgstr "Informationen über andere GNUnet Knoten ausgeben." |
721 | 721 | ||
722 | #: src/cadet/gnunet-cadet.c:969 | 722 | #: src/cadet/gnunet-cadet.c:970 |
723 | #, fuzzy | 723 | #, fuzzy |
724 | msgid "Provide information about all tunnels" | 724 | msgid "Provide information about all tunnels" |
725 | msgstr "Informationen über andere GNUnet Knoten ausgeben." | 725 | msgstr "Informationen über andere GNUnet Knoten ausgeben." |
@@ -767,28 +767,6 @@ msgstr "Ausführlicherer Modus (empfangene Werte ausgeben)" | |||
767 | msgid "Connection to conversation service lost, trying to reconnect\n" | 767 | msgid "Connection to conversation service lost, trying to reconnect\n" |
768 | msgstr "" | 768 | msgstr "" |
769 | 769 | ||
770 | #: src/conversation/gnunet-conversation-test.c:119 | ||
771 | #, c-format | ||
772 | msgid "" | ||
773 | "\n" | ||
774 | "End of transmission. Have a GNU day.\n" | ||
775 | msgstr "" | ||
776 | |||
777 | #: src/conversation/gnunet-conversation-test.c:145 | ||
778 | #, c-format | ||
779 | msgid "" | ||
780 | "\n" | ||
781 | "We are now playing your recording back. If you can hear it, your audio " | ||
782 | "settings are working..." | ||
783 | msgstr "" | ||
784 | |||
785 | #: src/conversation/gnunet-conversation-test.c:210 | ||
786 | #, c-format | ||
787 | msgid "" | ||
788 | "We will now be recording you for %s. After that time, the recording will be " | ||
789 | "played back to you..." | ||
790 | msgstr "" | ||
791 | |||
792 | #: src/conversation/gnunet-conversation.c:269 | 770 | #: src/conversation/gnunet-conversation.c:269 |
793 | #, c-format | 771 | #, c-format |
794 | msgid "Incoming call from `%s'. Please /accept %u or /cancel %u the call.\n" | 772 | msgid "Incoming call from `%s'. Please /accept %u or /cancel %u the call.\n" |
@@ -1046,8 +1024,30 @@ msgstr "" | |||
1046 | msgid "Enables having a conversation with other GNUnet users." | 1024 | msgid "Enables having a conversation with other GNUnet users." |
1047 | msgstr "" | 1025 | msgstr "" |
1048 | 1026 | ||
1049 | #: src/conversation/gnunet-helper-audio-playback-gst.c:356 | 1027 | #: src/conversation/gnunet-conversation-test.c:119 |
1028 | #, c-format | ||
1029 | msgid "" | ||
1030 | "\n" | ||
1031 | "End of transmission. Have a GNU day.\n" | ||
1032 | msgstr "" | ||
1033 | |||
1034 | #: src/conversation/gnunet-conversation-test.c:145 | ||
1035 | #, c-format | ||
1036 | msgid "" | ||
1037 | "\n" | ||
1038 | "We are now playing your recording back. If you can hear it, your audio " | ||
1039 | "settings are working..." | ||
1040 | msgstr "" | ||
1041 | |||
1042 | #: src/conversation/gnunet-conversation-test.c:210 | ||
1043 | #, c-format | ||
1044 | msgid "" | ||
1045 | "We will now be recording you for %s. After that time, the recording will be " | ||
1046 | "played back to you..." | ||
1047 | msgstr "" | ||
1048 | |||
1050 | #: src/conversation/gnunet_gst.c:622 | 1049 | #: src/conversation/gnunet_gst.c:622 |
1050 | #: src/conversation/gnunet-helper-audio-playback-gst.c:361 | ||
1051 | #, c-format | 1051 | #, c-format |
1052 | msgid "Read error from STDIN: %d %s\n" | 1052 | msgid "Read error from STDIN: %d %s\n" |
1053 | msgstr "Fehler beim Lesen aus STDIN: %d %s\n" | 1053 | msgstr "Fehler beim Lesen aus STDIN: %d %s\n" |
@@ -1057,60 +1057,60 @@ msgstr "Fehler beim Lesen aus STDIN: %d %s\n" | |||
1057 | msgid "pa_stream_write() failed: %s\n" | 1057 | msgid "pa_stream_write() failed: %s\n" |
1058 | msgstr "pa_stream_write() fehlgeschlagen: %s\n" | 1058 | msgstr "pa_stream_write() fehlgeschlagen: %s\n" |
1059 | 1059 | ||
1060 | #: src/conversation/gnunet-helper-audio-playback.c:607 | 1060 | #: src/conversation/gnunet-helper-audio-playback.c:612 |
1061 | msgid "gnunet-helper-audio-playback - Got signal, exiting\n" | 1061 | msgid "gnunet-helper-audio-playback - Got signal, exiting\n" |
1062 | msgstr "gnunet-helper-audio-playback - Signal erhalten, wird abgebrochen\n" | 1062 | msgstr "gnunet-helper-audio-playback - Signal erhalten, wird abgebrochen\n" |
1063 | 1063 | ||
1064 | #: src/conversation/gnunet-helper-audio-playback.c:632 | 1064 | #: src/conversation/gnunet-helper-audio-playback.c:637 |
1065 | #: src/conversation/gnunet-helper-audio-record.c:545 | 1065 | #: src/conversation/gnunet-helper-audio-record.c:545 |
1066 | #, fuzzy | 1066 | #, fuzzy |
1067 | msgid "Connection established.\n" | 1067 | msgid "Connection established.\n" |
1068 | msgstr " Verbindung fehlgeschlagen\n" | 1068 | msgstr " Verbindung fehlgeschlagen\n" |
1069 | 1069 | ||
1070 | #: src/conversation/gnunet-helper-audio-playback.c:637 | 1070 | #: src/conversation/gnunet-helper-audio-playback.c:642 |
1071 | #: src/conversation/gnunet-helper-audio-record.c:550 | 1071 | #: src/conversation/gnunet-helper-audio-record.c:550 |
1072 | #, c-format | 1072 | #, c-format |
1073 | msgid "pa_stream_new() failed: %s\n" | 1073 | msgid "pa_stream_new() failed: %s\n" |
1074 | msgstr "pa_stream_new() fehlgeschlagen: %s\n" | 1074 | msgstr "pa_stream_new() fehlgeschlagen: %s\n" |
1075 | 1075 | ||
1076 | #: src/conversation/gnunet-helper-audio-playback.c:651 | 1076 | #: src/conversation/gnunet-helper-audio-playback.c:656 |
1077 | #, c-format | 1077 | #, c-format |
1078 | msgid "pa_stream_connect_playback() failed: %s\n" | 1078 | msgid "pa_stream_connect_playback() failed: %s\n" |
1079 | msgstr "pa_stream_connect_playback() fehlgeschlagen: %s\n" | 1079 | msgstr "pa_stream_connect_playback() fehlgeschlagen: %s\n" |
1080 | 1080 | ||
1081 | #: src/conversation/gnunet-helper-audio-playback.c:664 | 1081 | #: src/conversation/gnunet-helper-audio-playback.c:669 |
1082 | #: src/conversation/gnunet-helper-audio-record.c:576 | 1082 | #: src/conversation/gnunet-helper-audio-record.c:576 |
1083 | #, c-format | 1083 | #, c-format |
1084 | msgid "Connection failure: %s\n" | 1084 | msgid "Connection failure: %s\n" |
1085 | msgstr "Verbindung fehlgeschlagen: %s\n" | 1085 | msgstr "Verbindung fehlgeschlagen: %s\n" |
1086 | 1086 | ||
1087 | #: src/conversation/gnunet-helper-audio-playback.c:685 | 1087 | #: src/conversation/gnunet-helper-audio-playback.c:690 |
1088 | #: src/conversation/gnunet-helper-audio-record.c:599 | 1088 | #: src/conversation/gnunet-helper-audio-record.c:599 |
1089 | msgid "Wrong Spec\n" | 1089 | msgid "Wrong Spec\n" |
1090 | msgstr "" | 1090 | msgstr "" |
1091 | 1091 | ||
1092 | #: src/conversation/gnunet-helper-audio-playback.c:691 | 1092 | #: src/conversation/gnunet-helper-audio-playback.c:696 |
1093 | #: src/conversation/gnunet-helper-audio-record.c:605 | 1093 | #: src/conversation/gnunet-helper-audio-record.c:605 |
1094 | msgid "pa_mainloop_new() failed.\n" | 1094 | msgid "pa_mainloop_new() failed.\n" |
1095 | msgstr "pa_mainloop_new() fehlgeschlagen.\n" | 1095 | msgstr "pa_mainloop_new() fehlgeschlagen.\n" |
1096 | 1096 | ||
1097 | #: src/conversation/gnunet-helper-audio-playback.c:705 | 1097 | #: src/conversation/gnunet-helper-audio-playback.c:710 |
1098 | #: src/conversation/gnunet-helper-audio-record.c:620 | 1098 | #: src/conversation/gnunet-helper-audio-record.c:620 |
1099 | msgid "pa_context_new() failed.\n" | 1099 | msgid "pa_context_new() failed.\n" |
1100 | msgstr "pa_context_new() fehlgeschlagen.\n" | 1100 | msgstr "pa_context_new() fehlgeschlagen.\n" |
1101 | 1101 | ||
1102 | #: src/conversation/gnunet-helper-audio-playback.c:712 | 1102 | #: src/conversation/gnunet-helper-audio-playback.c:717 |
1103 | #: src/conversation/gnunet-helper-audio-record.c:626 | 1103 | #: src/conversation/gnunet-helper-audio-record.c:626 |
1104 | #, c-format | 1104 | #, c-format |
1105 | msgid "pa_context_connect() failed: %s\n" | 1105 | msgid "pa_context_connect() failed: %s\n" |
1106 | msgstr "pa_context_connect() fehlgeschlagen: %s\n" | 1106 | msgstr "pa_context_connect() fehlgeschlagen: %s\n" |
1107 | 1107 | ||
1108 | #: src/conversation/gnunet-helper-audio-playback.c:718 | 1108 | #: src/conversation/gnunet-helper-audio-playback.c:723 |
1109 | #: src/conversation/gnunet-helper-audio-record.c:632 | 1109 | #: src/conversation/gnunet-helper-audio-record.c:632 |
1110 | msgid "pa_mainloop_run() failed.\n" | 1110 | msgid "pa_mainloop_run() failed.\n" |
1111 | msgstr "pa_mainloop_run() fehlgeschlagen.\n" | 1111 | msgstr "pa_mainloop_run() fehlgeschlagen.\n" |
1112 | 1112 | ||
1113 | #: src/conversation/gnunet-helper-audio-playback.c:790 | 1113 | #: src/conversation/gnunet-helper-audio-playback.c:795 |
1114 | #, c-format | 1114 | #, c-format |
1115 | msgid "Read error from STDIN: %s\n" | 1115 | msgid "Read error from STDIN: %s\n" |
1116 | msgstr "Fehler beim Lesen aus STDIN: %s\n" | 1116 | msgstr "Fehler beim Lesen aus STDIN: %s\n" |
@@ -1177,7 +1177,7 @@ msgstr "UDP-Sockets können nicht geöffnet werden\n" | |||
1177 | msgid "Could not open line, port %s already in use!\n" | 1177 | msgid "Could not open line, port %s already in use!\n" |
1178 | msgstr "Verbindung zum %s-Dienst ist fehlgeschlagen!\n" | 1178 | msgstr "Verbindung zum %s-Dienst ist fehlgeschlagen!\n" |
1179 | 1179 | ||
1180 | #: src/conversation/microphone.c:119 | 1180 | #: src/conversation/microphone.c:121 |
1181 | msgid "Could not start record audio helper\n" | 1181 | msgid "Could not start record audio helper\n" |
1182 | msgstr "" | 1182 | msgstr "" |
1183 | 1183 | ||
@@ -1265,25 +1265,25 @@ msgstr "# gap Anfragen verworfen: Kollision in RT" | |||
1265 | msgid "# dequeuing CAR (duplicate request)" | 1265 | msgid "# dequeuing CAR (duplicate request)" |
1266 | msgstr "" | 1266 | msgstr "" |
1267 | 1267 | ||
1268 | #: src/core/gnunet-service-core.c:440 | 1268 | #: src/core/gnunet-service-core.c:443 |
1269 | #, fuzzy, c-format | 1269 | #, fuzzy, c-format |
1270 | msgid "# bytes of messages of type %u received" | 1270 | msgid "# bytes of messages of type %u received" |
1271 | msgstr "# Bytes Rauschen empfangen" | 1271 | msgstr "# Bytes Rauschen empfangen" |
1272 | 1272 | ||
1273 | #: src/core/gnunet-service-core.c:538 | 1273 | #: src/core/gnunet-service-core.c:541 |
1274 | msgid "# messages discarded (session disconnected)" | 1274 | msgid "# messages discarded (session disconnected)" |
1275 | msgstr "" | 1275 | msgstr "" |
1276 | 1276 | ||
1277 | #: src/core/gnunet-service-core.c:876 | 1277 | #: src/core/gnunet-service-core.c:879 |
1278 | #, fuzzy, c-format | 1278 | #, fuzzy, c-format |
1279 | msgid "# messages of type %u discarded (client busy)" | 1279 | msgid "# messages of type %u discarded (client busy)" |
1280 | msgstr "# Bytes Rauschen empfangen" | 1280 | msgstr "# Bytes Rauschen empfangen" |
1281 | 1281 | ||
1282 | #: src/core/gnunet-service-core.c:985 | 1282 | #: src/core/gnunet-service-core.c:988 |
1283 | msgid "Core service is lacking HOSTKEY configuration setting. Exiting.\n" | 1283 | msgid "Core service is lacking HOSTKEY configuration setting. Exiting.\n" |
1284 | msgstr "" | 1284 | msgstr "" |
1285 | 1285 | ||
1286 | #: src/core/gnunet-service-core.c:1006 | 1286 | #: src/core/gnunet-service-core.c:1009 |
1287 | #, fuzzy, c-format | 1287 | #, fuzzy, c-format |
1288 | msgid "Core service of `%s' ready.\n" | 1288 | msgid "Core service of `%s' ready.\n" |
1289 | msgstr "Dienst »%s« wird neu gestartet.\n" | 1289 | msgstr "Dienst »%s« wird neu gestartet.\n" |
@@ -1296,141 +1296,141 @@ msgstr "# Bytes verschlüsselt" | |||
1296 | msgid "# bytes decrypted" | 1296 | msgid "# bytes decrypted" |
1297 | msgstr "# Bytes entschlüsselt" | 1297 | msgstr "# Bytes entschlüsselt" |
1298 | 1298 | ||
1299 | #: src/core/gnunet-service-core_kx.c:725 | 1299 | #: src/core/gnunet-service-core_kx.c:728 |
1300 | msgid "# PAYLOAD dropped (out of order)" | 1300 | msgid "# PAYLOAD dropped (out of order)" |
1301 | msgstr "" | 1301 | msgstr "" |
1302 | 1302 | ||
1303 | #: src/core/gnunet-service-core_kx.c:775 | 1303 | #: src/core/gnunet-service-core_kx.c:778 |
1304 | msgid "# key exchanges initiated" | 1304 | msgid "# key exchanges initiated" |
1305 | msgstr "" | 1305 | msgstr "" |
1306 | 1306 | ||
1307 | #: src/core/gnunet-service-core_kx.c:837 | 1307 | #: src/core/gnunet-service-core_kx.c:840 |
1308 | msgid "# key exchanges stopped" | 1308 | msgid "# key exchanges stopped" |
1309 | msgstr "" | 1309 | msgstr "" |
1310 | 1310 | ||
1311 | #: src/core/gnunet-service-core_kx.c:871 | 1311 | #: src/core/gnunet-service-core_kx.c:874 |
1312 | #, fuzzy | 1312 | #, fuzzy |
1313 | msgid "# PING messages transmitted" | 1313 | msgid "# PING messages transmitted" |
1314 | msgstr "# PING Nachrichten erstellt" | 1314 | msgstr "# PING Nachrichten erstellt" |
1315 | 1315 | ||
1316 | #: src/core/gnunet-service-core_kx.c:938 | 1316 | #: src/core/gnunet-service-core_kx.c:941 |
1317 | msgid "# old ephemeral keys ignored" | 1317 | msgid "# old ephemeral keys ignored" |
1318 | msgstr "" | 1318 | msgstr "" |
1319 | 1319 | ||
1320 | #: src/core/gnunet-service-core_kx.c:945 | 1320 | #: src/core/gnunet-service-core_kx.c:948 |
1321 | #, fuzzy | 1321 | #, fuzzy |
1322 | msgid "# ephemeral keys received" | 1322 | msgid "# ephemeral keys received" |
1323 | msgstr "# verschlüsselter PONG Nachrichten empfangen" | 1323 | msgstr "# verschlüsselter PONG Nachrichten empfangen" |
1324 | 1324 | ||
1325 | #: src/core/gnunet-service-core_kx.c:984 | 1325 | #: src/core/gnunet-service-core_kx.c:987 |
1326 | #, c-format | 1326 | #, c-format |
1327 | msgid "" | 1327 | msgid "" |
1328 | "Ephemeral key message from peer `%s' rejected as its validity range does not " | 1328 | "Ephemeral key message from peer `%s' rejected as its validity range does not " |
1329 | "match our system time (%llu not in [%llu,%llu]).\n" | 1329 | "match our system time (%llu not in [%llu,%llu]).\n" |
1330 | msgstr "" | 1330 | msgstr "" |
1331 | 1331 | ||
1332 | #: src/core/gnunet-service-core_kx.c:995 | 1332 | #: src/core/gnunet-service-core_kx.c:998 |
1333 | #, fuzzy | 1333 | #, fuzzy |
1334 | msgid "# EPHEMERAL_KEY messages received" | 1334 | msgid "# EPHEMERAL_KEY messages received" |
1335 | msgstr "# verschlüsselter PONG Nachrichten empfangen" | 1335 | msgstr "# verschlüsselter PONG Nachrichten empfangen" |
1336 | 1336 | ||
1337 | #: src/core/gnunet-service-core_kx.c:1091 | 1337 | #: src/core/gnunet-service-core_kx.c:1094 |
1338 | #: src/transport/gnunet-service-transport_validation.c:1119 | 1338 | #: src/transport/gnunet-service-transport_validation.c:1128 |
1339 | #, fuzzy | 1339 | #, fuzzy |
1340 | msgid "# PING messages received" | 1340 | msgid "# PING messages received" |
1341 | msgstr "# PING Nachrichten erstellt" | 1341 | msgstr "# PING Nachrichten erstellt" |
1342 | 1342 | ||
1343 | #: src/core/gnunet-service-core_kx.c:1100 | 1343 | #: src/core/gnunet-service-core_kx.c:1103 |
1344 | #, fuzzy | 1344 | #, fuzzy |
1345 | msgid "# PING messages dropped (out of order)" | 1345 | msgid "# PING messages dropped (out of order)" |
1346 | msgstr "# PING Nachrichten erstellt" | 1346 | msgstr "# PING Nachrichten erstellt" |
1347 | 1347 | ||
1348 | #: src/core/gnunet-service-core_kx.c:1158 | 1348 | #: src/core/gnunet-service-core_kx.c:1161 |
1349 | #, fuzzy | 1349 | #, fuzzy |
1350 | msgid "# PONG messages created" | 1350 | msgid "# PONG messages created" |
1351 | msgstr "# PING Nachrichten erstellt" | 1351 | msgstr "# PING Nachrichten erstellt" |
1352 | 1352 | ||
1353 | #: src/core/gnunet-service-core_kx.c:1184 | 1353 | #: src/core/gnunet-service-core_kx.c:1187 |
1354 | msgid "# sessions terminated by timeout" | 1354 | msgid "# sessions terminated by timeout" |
1355 | msgstr "" | 1355 | msgstr "" |
1356 | 1356 | ||
1357 | #: src/core/gnunet-service-core_kx.c:1197 | 1357 | #: src/core/gnunet-service-core_kx.c:1200 |
1358 | #, fuzzy | 1358 | #, fuzzy |
1359 | msgid "# keepalive messages sent" | 1359 | msgid "# keepalive messages sent" |
1360 | msgstr "# Klartext PING Nachrichten gesendet" | 1360 | msgstr "# Klartext PING Nachrichten gesendet" |
1361 | 1361 | ||
1362 | #: src/core/gnunet-service-core_kx.c:1261 | 1362 | #: src/core/gnunet-service-core_kx.c:1264 |
1363 | #: src/transport/gnunet-service-transport_validation.c:1442 | 1363 | #: src/transport/gnunet-service-transport_validation.c:1461 |
1364 | #, fuzzy | 1364 | #, fuzzy |
1365 | msgid "# PONG messages received" | 1365 | msgid "# PONG messages received" |
1366 | msgstr "# verschlüsselter PONG Nachrichten empfangen" | 1366 | msgstr "# verschlüsselter PONG Nachrichten empfangen" |
1367 | 1367 | ||
1368 | #: src/core/gnunet-service-core_kx.c:1268 | 1368 | #: src/core/gnunet-service-core_kx.c:1271 |
1369 | msgid "# PONG messages dropped (connection down)" | 1369 | msgid "# PONG messages dropped (connection down)" |
1370 | msgstr "" | 1370 | msgstr "" |
1371 | 1371 | ||
1372 | #: src/core/gnunet-service-core_kx.c:1273 | 1372 | #: src/core/gnunet-service-core_kx.c:1276 |
1373 | #, fuzzy | 1373 | #, fuzzy |
1374 | msgid "# PONG messages dropped (out of order)" | 1374 | msgid "# PONG messages dropped (out of order)" |
1375 | msgstr "# PING Nachrichten erstellt" | 1375 | msgstr "# PING Nachrichten erstellt" |
1376 | 1376 | ||
1377 | #: src/core/gnunet-service-core_kx.c:1308 | 1377 | #: src/core/gnunet-service-core_kx.c:1311 |
1378 | #, fuzzy | 1378 | #, fuzzy |
1379 | msgid "# PONG messages decrypted" | 1379 | msgid "# PONG messages decrypted" |
1380 | msgstr "# PING Nachrichten erstellt" | 1380 | msgstr "# PING Nachrichten erstellt" |
1381 | 1381 | ||
1382 | #: src/core/gnunet-service-core_kx.c:1346 | 1382 | #: src/core/gnunet-service-core_kx.c:1349 |
1383 | #, fuzzy | 1383 | #, fuzzy |
1384 | msgid "# session keys confirmed via PONG" | 1384 | msgid "# session keys confirmed via PONG" |
1385 | msgstr "# Knotenankündigungen empfangen" | 1385 | msgstr "# Knotenankündigungen empfangen" |
1386 | 1386 | ||
1387 | #: src/core/gnunet-service-core_kx.c:1357 | 1387 | #: src/core/gnunet-service-core_kx.c:1360 |
1388 | #, fuzzy | 1388 | #, fuzzy |
1389 | msgid "# timeouts prevented via PONG" | 1389 | msgid "# timeouts prevented via PONG" |
1390 | msgstr "# Bytes empfangen über TCP" | 1390 | msgstr "# Bytes empfangen über TCP" |
1391 | 1391 | ||
1392 | #: src/core/gnunet-service-core_kx.c:1364 | 1392 | #: src/core/gnunet-service-core_kx.c:1367 |
1393 | #, fuzzy | 1393 | #, fuzzy |
1394 | msgid "# rekey operations confirmed via PONG" | 1394 | msgid "# rekey operations confirmed via PONG" |
1395 | msgstr "# Knotenankündigungen empfangen" | 1395 | msgstr "# Knotenankündigungen empfangen" |
1396 | 1396 | ||
1397 | #: src/core/gnunet-service-core_kx.c:1518 | 1397 | #: src/core/gnunet-service-core_kx.c:1521 |
1398 | msgid "# DATA message dropped (out of order)" | 1398 | msgid "# DATA message dropped (out of order)" |
1399 | msgstr "" | 1399 | msgstr "" |
1400 | 1400 | ||
1401 | #: src/core/gnunet-service-core_kx.c:1526 | 1401 | #: src/core/gnunet-service-core_kx.c:1529 |
1402 | #, c-format | 1402 | #, c-format |
1403 | msgid "" | 1403 | msgid "" |
1404 | "Session to peer `%s' went down due to key expiration (should not happen)\n" | 1404 | "Session to peer `%s' went down due to key expiration (should not happen)\n" |
1405 | msgstr "" | 1405 | msgstr "" |
1406 | 1406 | ||
1407 | #: src/core/gnunet-service-core_kx.c:1529 | 1407 | #: src/core/gnunet-service-core_kx.c:1532 |
1408 | msgid "# sessions terminated by key expiration" | 1408 | msgid "# sessions terminated by key expiration" |
1409 | msgstr "" | 1409 | msgstr "" |
1410 | 1410 | ||
1411 | #: src/core/gnunet-service-core_kx.c:1590 | 1411 | #: src/core/gnunet-service-core_kx.c:1593 |
1412 | #: src/core/gnunet-service-core_kx.c:1616 | 1412 | #: src/core/gnunet-service-core_kx.c:1619 |
1413 | #, fuzzy | 1413 | #, fuzzy |
1414 | msgid "# bytes dropped (duplicates)" | 1414 | msgid "# bytes dropped (duplicates)" |
1415 | msgstr "# Bytes verworfen von TCP (ausgehend)" | 1415 | msgstr "# Bytes verworfen von TCP (ausgehend)" |
1416 | 1416 | ||
1417 | #: src/core/gnunet-service-core_kx.c:1603 | 1417 | #: src/core/gnunet-service-core_kx.c:1606 |
1418 | #, fuzzy | 1418 | #, fuzzy |
1419 | msgid "# bytes dropped (out of sequence)" | 1419 | msgid "# bytes dropped (out of sequence)" |
1420 | msgstr "# Bytes verworfen von TCP (ausgehend)" | 1420 | msgstr "# Bytes verworfen von TCP (ausgehend)" |
1421 | 1421 | ||
1422 | #: src/core/gnunet-service-core_kx.c:1645 | 1422 | #: src/core/gnunet-service-core_kx.c:1648 |
1423 | #, fuzzy | 1423 | #, fuzzy |
1424 | msgid "# bytes dropped (ancient message)" | 1424 | msgid "# bytes dropped (ancient message)" |
1425 | msgstr "# Bytes verworfen von TCP (ausgehend)" | 1425 | msgstr "# Bytes verworfen von TCP (ausgehend)" |
1426 | 1426 | ||
1427 | #: src/core/gnunet-service-core_kx.c:1653 | 1427 | #: src/core/gnunet-service-core_kx.c:1656 |
1428 | #, fuzzy | 1428 | #, fuzzy |
1429 | msgid "# bytes of payload decrypted" | 1429 | msgid "# bytes of payload decrypted" |
1430 | msgstr "# Bytes entschlüsselt" | 1430 | msgstr "# Bytes entschlüsselt" |
1431 | 1431 | ||
1432 | #: src/core/gnunet-service-core_sessions.c:266 | 1432 | #: src/core/gnunet-service-core_sessions.c:260 |
1433 | #: src/core/gnunet-service-core_sessions.c:356 | 1433 | #: src/core/gnunet-service-core_sessions.c:350 |
1434 | #: src/dht/gnunet-service-dht_neighbours.c:733 | 1434 | #: src/dht/gnunet-service-dht_neighbours.c:733 |
1435 | #: src/dht/gnunet-service-dht_neighbours.c:795 | 1435 | #: src/dht/gnunet-service-dht_neighbours.c:795 |
1436 | #: src/fs/gnunet-service-fs_cp.c:615 src/fs/gnunet-service-fs_cp.c:1520 | 1436 | #: src/fs/gnunet-service-fs_cp.c:615 src/fs/gnunet-service-fs_cp.c:1520 |
@@ -1441,17 +1441,17 @@ msgstr "# Bytes entschlüsselt" | |||
1441 | msgid "# peers connected" | 1441 | msgid "# peers connected" |
1442 | msgstr "# verbundener Knoten" | 1442 | msgstr "# verbundener Knoten" |
1443 | 1443 | ||
1444 | #: src/core/gnunet-service-core_sessions.c:302 | 1444 | #: src/core/gnunet-service-core_sessions.c:296 |
1445 | #, fuzzy | 1445 | #, fuzzy |
1446 | msgid "# type map refreshes sent" | 1446 | msgid "# type map refreshes sent" |
1447 | msgstr "# p2p Trace-Antworten gesendet" | 1447 | msgstr "# p2p Trace-Antworten gesendet" |
1448 | 1448 | ||
1449 | #: src/core/gnunet-service-core_sessions.c:422 | 1449 | #: src/core/gnunet-service-core_sessions.c:416 |
1450 | #, fuzzy | 1450 | #, fuzzy |
1451 | msgid "# outdated typemap confirmations received" | 1451 | msgid "# outdated typemap confirmations received" |
1452 | msgstr "# Bytes empfangen über TCP" | 1452 | msgstr "# Bytes empfangen über TCP" |
1453 | 1453 | ||
1454 | #: src/core/gnunet-service-core_sessions.c:439 | 1454 | #: src/core/gnunet-service-core_sessions.c:433 |
1455 | #, fuzzy | 1455 | #, fuzzy |
1456 | msgid "# valid typemap confirmations received" | 1456 | msgid "# valid typemap confirmations received" |
1457 | msgstr "# Bytes empfangen über TCP" | 1457 | msgstr "# Bytes empfangen über TCP" |
@@ -1466,136 +1466,6 @@ msgstr "# Bytes empfangen über TCP" | |||
1466 | msgid "# updates to my type map" | 1466 | msgid "# updates to my type map" |
1467 | msgstr "" | 1467 | msgstr "" |
1468 | 1468 | ||
1469 | #: src/credential/credential_misc.c:88 | ||
1470 | #, fuzzy, c-format | ||
1471 | msgid "Unable to parse CRED record string `%s'\n" | ||
1472 | msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':" | ||
1473 | |||
1474 | #: src/credential/gnunet-credential.c:278 src/namestore/gnunet-namestore.c:776 | ||
1475 | #: src/namestore/plugin_rest_namestore.c:1009 | ||
1476 | #, fuzzy, c-format | ||
1477 | msgid "Ego `%s' not known to identity service\n" | ||
1478 | msgstr "`%s': unbekannter Dienst: %s\n" | ||
1479 | |||
1480 | #: src/credential/gnunet-credential.c:294 | ||
1481 | #: src/credential/gnunet-credential.c:446 | ||
1482 | #, c-format | ||
1483 | msgid "Issuer public key `%s' is not well-formed\n" | ||
1484 | msgstr "" | ||
1485 | |||
1486 | #: src/credential/gnunet-credential.c:375 | ||
1487 | #: src/credential/gnunet-credential.c:435 | ||
1488 | #, fuzzy, c-format | ||
1489 | msgid "Issuer public key not well-formed\n" | ||
1490 | msgstr "Ungültiger Parameter: `%s'\n" | ||
1491 | |||
1492 | #: src/credential/gnunet-credential.c:386 | ||
1493 | #: src/credential/gnunet-credential.c:455 | ||
1494 | #, fuzzy, c-format | ||
1495 | msgid "Failed to connect to CREDENTIAL\n" | ||
1496 | msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" | ||
1497 | |||
1498 | #: src/credential/gnunet-credential.c:392 | ||
1499 | #, c-format | ||
1500 | msgid "You must provide issuer the attribute\n" | ||
1501 | msgstr "" | ||
1502 | |||
1503 | #: src/credential/gnunet-credential.c:399 | ||
1504 | #, fuzzy, c-format | ||
1505 | msgid "ego required\n" | ||
1506 | msgstr "Gültiger Typ ist erforderlich\n" | ||
1507 | |||
1508 | #: src/credential/gnunet-credential.c:415 | ||
1509 | #, c-format | ||
1510 | msgid "Subject public key needed\n" | ||
1511 | msgstr "" | ||
1512 | |||
1513 | #: src/credential/gnunet-credential.c:426 | ||
1514 | #, c-format | ||
1515 | msgid "Subject public key `%s' is not well-formed\n" | ||
1516 | msgstr "" | ||
1517 | |||
1518 | #: src/credential/gnunet-credential.c:461 | ||
1519 | #, c-format | ||
1520 | msgid "You must provide issuer and subject attributes\n" | ||
1521 | msgstr "" | ||
1522 | |||
1523 | #: src/credential/gnunet-credential.c:511 | ||
1524 | #, fuzzy, c-format | ||
1525 | msgid "Issuer ego required\n" | ||
1526 | msgstr "Gültiger Typ ist erforderlich\n" | ||
1527 | |||
1528 | #: src/credential/gnunet-credential.c:523 | ||
1529 | #, c-format | ||
1530 | msgid "Please specify name to lookup, subject key and issuer key!\n" | ||
1531 | msgstr "" | ||
1532 | |||
1533 | #: src/credential/gnunet-credential.c:543 | ||
1534 | msgid "create credential" | ||
1535 | msgstr "" | ||
1536 | |||
1537 | #: src/credential/gnunet-credential.c:547 | ||
1538 | msgid "verify credential against attribute" | ||
1539 | msgstr "" | ||
1540 | |||
1541 | #: src/credential/gnunet-credential.c:552 | ||
1542 | #, fuzzy | ||
1543 | msgid "The public key of the subject to lookup the credential for" | ||
1544 | msgstr "Die Priorität des Inhalts angeben" | ||
1545 | |||
1546 | #: src/credential/gnunet-credential.c:557 | ||
1547 | msgid "The name of the credential presented by the subject" | ||
1548 | msgstr "" | ||
1549 | |||
1550 | #: src/credential/gnunet-credential.c:562 | ||
1551 | msgid "The public key of the authority to verify the credential against" | ||
1552 | msgstr "" | ||
1553 | |||
1554 | #: src/credential/gnunet-credential.c:567 | ||
1555 | msgid "The ego to use" | ||
1556 | msgstr "" | ||
1557 | |||
1558 | #: src/credential/gnunet-credential.c:572 | ||
1559 | msgid "The issuer attribute to verify against or to issue" | ||
1560 | msgstr "" | ||
1561 | |||
1562 | #: src/credential/gnunet-credential.c:577 | ||
1563 | msgid "The time to live for the credential" | ||
1564 | msgstr "" | ||
1565 | |||
1566 | #: src/credential/gnunet-credential.c:581 | ||
1567 | msgid "collect credentials" | ||
1568 | msgstr "" | ||
1569 | |||
1570 | #: src/credential/gnunet-credential.c:595 | ||
1571 | #, fuzzy | ||
1572 | msgid "GNUnet credential resolver tool" | ||
1573 | msgstr "GNUnet Netzwerk Topologie tracen." | ||
1574 | |||
1575 | #: src/credential/gnunet-service-credential.c:1204 | ||
1576 | #: src/gns/gnunet-gns-helper-service-w32.c:727 src/gns/gnunet-gns.c:355 | ||
1577 | #, fuzzy, c-format | ||
1578 | msgid "Failed to connect to GNS\n" | ||
1579 | msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" | ||
1580 | |||
1581 | #: src/credential/gnunet-service-credential.c:1210 | ||
1582 | #: src/namestore/gnunet-namestore-fcfsd.c:1034 | ||
1583 | #: src/namestore/gnunet-namestore.c:802 | ||
1584 | #: src/namestore/plugin_rest_namestore.c:1022 | ||
1585 | #, fuzzy, c-format | ||
1586 | msgid "Failed to connect to namestore\n" | ||
1587 | msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" | ||
1588 | |||
1589 | #: src/credential/plugin_gnsrecord_credential.c:186 | ||
1590 | #, fuzzy, c-format | ||
1591 | msgid "Unable to parse ATTR record string `%s'\n" | ||
1592 | msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':" | ||
1593 | |||
1594 | #: src/credential/plugin_rest_credential.c:1155 src/gns/plugin_rest_gns.c:668 | ||
1595 | #, fuzzy | ||
1596 | msgid "GNS REST API initialized\n" | ||
1597 | msgstr " Verbindung fehlgeschlagen\n" | ||
1598 | |||
1599 | #: src/datacache/datacache.c:119 src/datacache/datacache.c:294 | 1469 | #: src/datacache/datacache.c:119 src/datacache/datacache.c:294 |
1600 | #: src/datastore/gnunet-service-datastore.c:757 | 1470 | #: src/datastore/gnunet-service-datastore.c:757 |
1601 | msgid "# bytes stored" | 1471 | msgid "# bytes stored" |
@@ -1641,9 +1511,8 @@ msgstr "" | |||
1641 | #: src/datacache/plugin_datacache_sqlite.c:122 | 1511 | #: src/datacache/plugin_datacache_sqlite.c:122 |
1642 | #: src/datastore/plugin_datastore_mysql.c:892 | 1512 | #: src/datastore/plugin_datastore_mysql.c:892 |
1643 | #: src/datastore/plugin_datastore_sqlite.c:58 | 1513 | #: src/datastore/plugin_datastore_sqlite.c:58 |
1644 | #: src/datastore/plugin_datastore_sqlite.c:66 | 1514 | #: src/datastore/plugin_datastore_sqlite.c:66 src/my/my.c:80 src/my/my.c:92 |
1645 | #: src/identity-provider/plugin_identity_provider_sqlite.c:52 src/my/my.c:80 | 1515 | #: src/mysql/mysql.c:42 src/mysql/mysql.c:49 |
1646 | #: src/my/my.c:92 src/mysql/mysql.c:42 src/mysql/mysql.c:49 | ||
1647 | #: src/namecache/plugin_namecache_sqlite.c:53 | 1516 | #: src/namecache/plugin_namecache_sqlite.c:53 |
1648 | #: src/namestore/plugin_namestore_sqlite.c:53 | 1517 | #: src/namestore/plugin_namestore_sqlite.c:53 |
1649 | #: src/peerstore/plugin_peerstore_sqlite.c:52 | 1518 | #: src/peerstore/plugin_peerstore_sqlite.c:52 |
@@ -1661,7 +1530,6 @@ msgstr "»%s« schlug bei %s:%d mit dem Fehler %s fehl\n" | |||
1661 | 1530 | ||
1662 | #: src/datacache/plugin_datacache_sqlite.c:817 | 1531 | #: src/datacache/plugin_datacache_sqlite.c:817 |
1663 | #: src/datastore/plugin_datastore_sqlite.c:456 | 1532 | #: src/datastore/plugin_datastore_sqlite.c:456 |
1664 | #: src/identity-provider/plugin_identity_provider_sqlite.c:336 | ||
1665 | #: src/namecache/plugin_namecache_sqlite.c:296 | 1533 | #: src/namecache/plugin_namecache_sqlite.c:296 |
1666 | #: src/namestore/plugin_namestore_sqlite.c:355 | 1534 | #: src/namestore/plugin_namestore_sqlite.c:355 |
1667 | msgid "Tried to close sqlite without finalizing all prepared statements.\n" | 1535 | msgid "Tried to close sqlite without finalizing all prepared statements.\n" |
@@ -1686,7 +1554,7 @@ msgstr "" | |||
1686 | msgid "# queue entries created" | 1554 | msgid "# queue entries created" |
1687 | msgstr "# PING Nachrichten erstellt" | 1555 | msgstr "# PING Nachrichten erstellt" |
1688 | 1556 | ||
1689 | #: src/datastore/datastore_api.c:740 | 1557 | #: src/datastore/datastore_api.c:760 |
1690 | msgid "# status messages received" | 1558 | msgid "# status messages received" |
1691 | msgstr "# empfangene Statusmeldungen" | 1559 | msgstr "# empfangene Statusmeldungen" |
1692 | 1560 | ||
@@ -1694,38 +1562,38 @@ msgstr "# empfangene Statusmeldungen" | |||
1694 | msgid "# Results received" | 1562 | msgid "# Results received" |
1695 | msgstr "# empfangene Ergebnisse" | 1563 | msgstr "# empfangene Ergebnisse" |
1696 | 1564 | ||
1697 | #: src/datastore/datastore_api.c:941 | 1565 | #: src/datastore/datastore_api.c:920 |
1698 | msgid "# datastore connections (re)created" | 1566 | msgid "# datastore connections (re)created" |
1699 | msgstr "" | 1567 | msgstr "" |
1700 | 1568 | ||
1701 | #: src/datastore/datastore_api.c:1055 | 1569 | #: src/datastore/datastore_api.c:1034 |
1702 | #, fuzzy | 1570 | #, fuzzy |
1703 | msgid "# PUT requests executed" | 1571 | msgid "# PUT requests executed" |
1704 | msgstr "# dht Anfragen weitergeleitet" | 1572 | msgstr "# dht Anfragen weitergeleitet" |
1705 | 1573 | ||
1706 | #: src/datastore/datastore_api.c:1116 | 1574 | #: src/datastore/datastore_api.c:1095 |
1707 | #, fuzzy | 1575 | #, fuzzy |
1708 | msgid "# RESERVE requests executed" | 1576 | msgid "# RESERVE requests executed" |
1709 | msgstr "# dht Anfragen weitergeleitet" | 1577 | msgstr "# dht Anfragen weitergeleitet" |
1710 | 1578 | ||
1711 | #: src/datastore/datastore_api.c:1181 | 1579 | #: src/datastore/datastore_api.c:1160 |
1712 | msgid "# RELEASE RESERVE requests executed" | 1580 | msgid "# RELEASE RESERVE requests executed" |
1713 | msgstr "" | 1581 | msgstr "" |
1714 | 1582 | ||
1715 | #: src/datastore/datastore_api.c:1259 | 1583 | #: src/datastore/datastore_api.c:1238 |
1716 | #, fuzzy | 1584 | #, fuzzy |
1717 | msgid "# REMOVE requests executed" | 1585 | msgid "# REMOVE requests executed" |
1718 | msgstr "# dht Anfragen weitergeleitet" | 1586 | msgstr "# dht Anfragen weitergeleitet" |
1719 | 1587 | ||
1720 | #: src/datastore/datastore_api.c:1319 | 1588 | #: src/datastore/datastore_api.c:1298 |
1721 | msgid "# GET REPLICATION requests executed" | 1589 | msgid "# GET REPLICATION requests executed" |
1722 | msgstr "" | 1590 | msgstr "" |
1723 | 1591 | ||
1724 | #: src/datastore/datastore_api.c:1381 | 1592 | #: src/datastore/datastore_api.c:1360 |
1725 | msgid "# GET ZERO ANONYMITY requests executed" | 1593 | msgid "# GET ZERO ANONYMITY requests executed" |
1726 | msgstr "" | 1594 | msgstr "" |
1727 | 1595 | ||
1728 | #: src/datastore/datastore_api.c:1462 | 1596 | #: src/datastore/datastore_api.c:1441 |
1729 | msgid "# GET requests executed" | 1597 | msgid "# GET requests executed" |
1730 | msgstr "# ausgeführte GET-Anfragen" | 1598 | msgstr "# ausgeführte GET-Anfragen" |
1731 | 1599 | ||
@@ -2002,7 +1870,6 @@ msgid "`%s' failed at %s:%u with error: %s" | |||
2002 | msgstr "`%s' schlug bei %s:%d mit dem Fehler %s fehl\n" | 1870 | msgstr "`%s' schlug bei %s:%d mit dem Fehler %s fehl\n" |
2003 | 1871 | ||
2004 | #: src/datastore/plugin_datastore_sqlite.c:271 | 1872 | #: src/datastore/plugin_datastore_sqlite.c:271 |
2005 | #: src/identity-provider/plugin_identity_provider_sqlite.c:212 | ||
2006 | #: src/namecache/plugin_namecache_sqlite.c:194 | 1873 | #: src/namecache/plugin_namecache_sqlite.c:194 |
2007 | #: src/namestore/plugin_namestore_sqlite.c:222 | 1874 | #: src/namestore/plugin_namestore_sqlite.c:222 |
2008 | #: src/peerstore/plugin_peerstore_sqlite.c:535 | 1875 | #: src/peerstore/plugin_peerstore_sqlite.c:535 |
@@ -2027,7 +1894,6 @@ msgid "" | |||
2027 | msgstr "" | 1894 | msgstr "" |
2028 | 1895 | ||
2029 | #: src/datastore/plugin_datastore_sqlite.c:1337 | 1896 | #: src/datastore/plugin_datastore_sqlite.c:1337 |
2030 | #: src/identity-provider/plugin_identity_provider_sqlite.c:711 | ||
2031 | #: src/namecache/plugin_namecache_sqlite.c:603 | 1897 | #: src/namecache/plugin_namecache_sqlite.c:603 |
2032 | #: src/namestore/plugin_namestore_sqlite.c:802 | 1898 | #: src/namestore/plugin_namestore_sqlite.c:802 |
2033 | msgid "Sqlite database running\n" | 1899 | msgid "Sqlite database running\n" |
@@ -2094,6 +1960,51 @@ msgstr "" | |||
2094 | msgid "Prints all packets that go through the DHT." | 1960 | msgid "Prints all packets that go through the DHT." |
2095 | msgstr "" | 1961 | msgstr "" |
2096 | 1962 | ||
1963 | #: src/dht/gnunet_dht_profiler.c:1161 src/testbed/gnunet-testbed-profiler.c:253 | ||
1964 | #, c-format | ||
1965 | msgid "Exiting as the number of peers is %u\n" | ||
1966 | msgstr "" | ||
1967 | |||
1968 | #: src/dht/gnunet_dht_profiler.c:1188 | ||
1969 | #, fuzzy | ||
1970 | msgid "number of peers to start" | ||
1971 | msgstr "Anzahl an Durchläufen" | ||
1972 | |||
1973 | #: src/dht/gnunet_dht_profiler.c:1194 | ||
1974 | msgid "" | ||
1975 | "maximum number of times we try to search for successor circle formation (0 " | ||
1976 | "for R5N)" | ||
1977 | msgstr "" | ||
1978 | |||
1979 | #: src/dht/gnunet_dht_profiler.c:1200 src/nse/gnunet-nse-profiler.c:853 | ||
1980 | #: src/testbed/gnunet-testbed-profiler.c:304 | ||
1981 | msgid "name of the file with the login information for the testbed" | ||
1982 | msgstr "" | ||
1983 | |||
1984 | #: src/dht/gnunet_dht_profiler.c:1206 | ||
1985 | msgid "delay between rounds for collecting statistics (default: 30 sec)" | ||
1986 | msgstr "" | ||
1987 | |||
1988 | #: src/dht/gnunet_dht_profiler.c:1212 | ||
1989 | msgid "delay to start doing PUTs (default: 1 sec)" | ||
1990 | msgstr "" | ||
1991 | |||
1992 | #: src/dht/gnunet_dht_profiler.c:1218 | ||
1993 | msgid "delay to start doing GETs (default: 5 min)" | ||
1994 | msgstr "" | ||
1995 | |||
1996 | #: src/dht/gnunet_dht_profiler.c:1223 | ||
1997 | msgid "replication degree for DHT PUTs" | ||
1998 | msgstr "" | ||
1999 | |||
2000 | #: src/dht/gnunet_dht_profiler.c:1230 | ||
2001 | msgid "timeout for DHT PUT and GET requests (default: 1 min)" | ||
2002 | msgstr "" | ||
2003 | |||
2004 | #: src/dht/gnunet_dht_profiler.c:1248 | ||
2005 | msgid "Measure quality and performance of the DHT service." | ||
2006 | msgstr "" | ||
2007 | |||
2097 | #: src/dht/gnunet-dht-put.c:120 | 2008 | #: src/dht/gnunet-dht-put.c:120 |
2098 | msgid "PUT request sent with key" | 2009 | msgid "PUT request sent with key" |
2099 | msgstr "" | 2010 | msgstr "" |
@@ -2360,51 +2271,6 @@ msgstr "" | |||
2360 | msgid "# DHT requests combined" | 2271 | msgid "# DHT requests combined" |
2361 | msgstr "# dht Anfragen weitergeleitet" | 2272 | msgstr "# dht Anfragen weitergeleitet" |
2362 | 2273 | ||
2363 | #: src/dht/gnunet_dht_profiler.c:1161 src/testbed/gnunet-testbed-profiler.c:255 | ||
2364 | #, c-format | ||
2365 | msgid "Exiting as the number of peers is %u\n" | ||
2366 | msgstr "" | ||
2367 | |||
2368 | #: src/dht/gnunet_dht_profiler.c:1188 | ||
2369 | #, fuzzy | ||
2370 | msgid "number of peers to start" | ||
2371 | msgstr "Anzahl an Durchläufen" | ||
2372 | |||
2373 | #: src/dht/gnunet_dht_profiler.c:1194 | ||
2374 | msgid "" | ||
2375 | "maximum number of times we try to search for successor circle formation (0 " | ||
2376 | "for R5N)" | ||
2377 | msgstr "" | ||
2378 | |||
2379 | #: src/dht/gnunet_dht_profiler.c:1200 src/nse/gnunet-nse-profiler.c:853 | ||
2380 | #: src/testbed/gnunet-testbed-profiler.c:305 | ||
2381 | msgid "name of the file with the login information for the testbed" | ||
2382 | msgstr "" | ||
2383 | |||
2384 | #: src/dht/gnunet_dht_profiler.c:1206 | ||
2385 | msgid "delay between rounds for collecting statistics (default: 30 sec)" | ||
2386 | msgstr "" | ||
2387 | |||
2388 | #: src/dht/gnunet_dht_profiler.c:1212 | ||
2389 | msgid "delay to start doing PUTs (default: 1 sec)" | ||
2390 | msgstr "" | ||
2391 | |||
2392 | #: src/dht/gnunet_dht_profiler.c:1218 | ||
2393 | msgid "delay to start doing GETs (default: 5 min)" | ||
2394 | msgstr "" | ||
2395 | |||
2396 | #: src/dht/gnunet_dht_profiler.c:1223 | ||
2397 | msgid "replication degree for DHT PUTs" | ||
2398 | msgstr "" | ||
2399 | |||
2400 | #: src/dht/gnunet_dht_profiler.c:1230 | ||
2401 | msgid "timeout for DHT PUT and GET requests (default: 1 min)" | ||
2402 | msgstr "" | ||
2403 | |||
2404 | #: src/dht/gnunet_dht_profiler.c:1248 | ||
2405 | msgid "Measure quality and performance of the DHT service." | ||
2406 | msgstr "" | ||
2407 | |||
2408 | #: src/dht/plugin_block_dht.c:187 | 2274 | #: src/dht/plugin_block_dht.c:187 |
2409 | #, fuzzy, c-format | 2275 | #, fuzzy, c-format |
2410 | msgid "Block not of type %u\n" | 2276 | msgid "Block not of type %u\n" |
@@ -2949,7 +2815,7 @@ msgstr "Fehler beim Empfangen der Antwort von gnunetd auf die `%s' Nachricht\n" | |||
2949 | msgid "Failed to not connect to `%s' service.\n" | 2815 | msgid "Failed to not connect to `%s' service.\n" |
2950 | msgstr "`%s' Dienst konnte nicht initialisiert werden.\n" | 2816 | msgstr "`%s' Dienst konnte nicht initialisiert werden.\n" |
2951 | 2817 | ||
2952 | #: src/fs/fs_misc.c:126 | 2818 | #: src/fs/fs_misc.c:128 |
2953 | #, fuzzy, c-format | 2819 | #, fuzzy, c-format |
2954 | msgid "Did not find mime type `%s' in extension list.\n" | 2820 | msgid "Did not find mime type `%s' in extension list.\n" |
2955 | msgstr "Knoten `%s' konnte nicht in der Routing Tabelle gefunden werden!\n" | 2821 | msgstr "Knoten `%s' konnte nicht in der Routing Tabelle gefunden werden!\n" |
@@ -3389,6 +3255,15 @@ msgid "" | |||
3389 | "chk/...)" | 3255 | "chk/...)" |
3390 | msgstr "" | 3256 | msgstr "" |
3391 | 3257 | ||
3258 | #: src/fs/gnunet-fs.c:119 | ||
3259 | msgid "print a list of all indexed files" | ||
3260 | msgstr "" | ||
3261 | |||
3262 | #: src/fs/gnunet-fs.c:130 | ||
3263 | #, fuzzy | ||
3264 | msgid "Special file-sharing operations" | ||
3265 | msgstr "Alle Optionen anzeigen" | ||
3266 | |||
3392 | #: src/fs/gnunet-fs-profiler.c:211 | 3267 | #: src/fs/gnunet-fs-profiler.c:211 |
3393 | msgid "run the experiment with COUNT peers" | 3268 | msgid "run the experiment with COUNT peers" |
3394 | msgstr "" | 3269 | msgstr "" |
@@ -3405,15 +3280,6 @@ msgstr "" | |||
3405 | msgid "run a testbed to measure file-sharing performance" | 3280 | msgid "run a testbed to measure file-sharing performance" |
3406 | msgstr "" | 3281 | msgstr "" |
3407 | 3282 | ||
3408 | #: src/fs/gnunet-fs.c:119 | ||
3409 | msgid "print a list of all indexed files" | ||
3410 | msgstr "" | ||
3411 | |||
3412 | #: src/fs/gnunet-fs.c:130 | ||
3413 | #, fuzzy | ||
3414 | msgid "Special file-sharing operations" | ||
3415 | msgstr "Alle Optionen anzeigen" | ||
3416 | |||
3417 | #: src/fs/gnunet-publish.c:219 src/fs/gnunet-publish.c:231 | 3283 | #: src/fs/gnunet-publish.c:219 src/fs/gnunet-publish.c:231 |
3418 | #, c-format | 3284 | #, c-format |
3419 | msgid "Publishing `%s' at %llu/%llu (%s remaining)\n" | 3285 | msgid "Publishing `%s' at %llu/%llu (%s remaining)\n" |
@@ -4113,11 +3979,22 @@ msgstr "" | |||
4113 | msgid "GNUnet DNS-to-GNS proxy (a DNS server)" | 3979 | msgid "GNUnet DNS-to-GNS proxy (a DNS server)" |
4114 | msgstr "" | 3980 | msgstr "" |
4115 | 3981 | ||
4116 | #: src/gns/gnunet-gns-helper-service-w32.c:602 | 3982 | #: src/gns/gnunet-gns.c:235 src/gns/plugin_rest_gns.c:346 |
4117 | msgid "Not ready to process requests, lacking ego data\n" | 3983 | #, c-format |
3984 | msgid "Invalid typename specified, assuming `ANY'\n" | ||
3985 | msgstr "" | ||
3986 | |||
3987 | #: src/gns/gnunet-gns.c:252 | ||
3988 | #, c-format | ||
3989 | msgid "Please specify name to lookup!\n" | ||
3990 | msgstr "" | ||
3991 | |||
3992 | #: src/gns/gnunet-gns.c:276 | ||
3993 | #, c-format | ||
3994 | msgid "Ego for `%s' not found, cannot perform lookup.\n" | ||
4118 | msgstr "" | 3995 | msgstr "" |
4119 | 3996 | ||
4120 | #: src/gns/gnunet-gns-helper-service-w32.c:701 src/gns/gnunet-gns.c:315 | 3997 | #: src/gns/gnunet-gns.c:315 src/gns/gnunet-gns-helper-service-w32.c:701 |
4121 | #: src/gns/plugin_rest_gns.c:422 | 3998 | #: src/gns/plugin_rest_gns.c:422 |
4122 | #, c-format | 3999 | #, c-format |
4123 | msgid "" | 4000 | msgid "" |
@@ -4125,6 +4002,50 @@ msgid "" | |||
4125 | "gns-import.sh?\n" | 4002 | "gns-import.sh?\n" |
4126 | msgstr "" | 4003 | msgstr "" |
4127 | 4004 | ||
4005 | #: src/gns/gnunet-gns.c:355 src/gns/gnunet-gns-helper-service-w32.c:727 | ||
4006 | #, fuzzy, c-format | ||
4007 | msgid "Failed to connect to GNS\n" | ||
4008 | msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" | ||
4009 | |||
4010 | #: src/gns/gnunet-gns.c:374 | ||
4011 | #, c-format | ||
4012 | msgid "Public key `%s' is not well-formed\n" | ||
4013 | msgstr "" | ||
4014 | |||
4015 | #: src/gns/gnunet-gns.c:428 | ||
4016 | msgid "Lookup a record for the given name" | ||
4017 | msgstr "" | ||
4018 | |||
4019 | #: src/gns/gnunet-gns.c:434 | ||
4020 | #, fuzzy | ||
4021 | msgid "Specify the type of the record to lookup" | ||
4022 | msgstr "Die Priorität des Inhalts angeben" | ||
4023 | |||
4024 | #: src/gns/gnunet-gns.c:440 | ||
4025 | msgid "Specify timeout for the lookup" | ||
4026 | msgstr "" | ||
4027 | |||
4028 | #: src/gns/gnunet-gns.c:445 | ||
4029 | msgid "No unneeded output" | ||
4030 | msgstr "" | ||
4031 | |||
4032 | #: src/gns/gnunet-gns.c:451 | ||
4033 | msgid "Specify the public key of the zone to lookup the record in" | ||
4034 | msgstr "" | ||
4035 | |||
4036 | #: src/gns/gnunet-gns.c:457 | ||
4037 | msgid "Specify the name of the ego of the zone to lookup the record in" | ||
4038 | msgstr "" | ||
4039 | |||
4040 | #: src/gns/gnunet-gns.c:476 | ||
4041 | #, fuzzy | ||
4042 | msgid "GNUnet GNS resolver tool" | ||
4043 | msgstr "GNUnet Netzwerk Topologie tracen." | ||
4044 | |||
4045 | #: src/gns/gnunet-gns-helper-service-w32.c:602 | ||
4046 | msgid "Not ready to process requests, lacking ego data\n" | ||
4047 | msgstr "" | ||
4048 | |||
4128 | #: src/gns/gnunet-gns-helper-service-w32.c:739 | 4049 | #: src/gns/gnunet-gns-helper-service-w32.c:739 |
4129 | #, fuzzy, c-format | 4050 | #, fuzzy, c-format |
4130 | msgid "Failed to connect to identity service\n" | 4051 | msgid "Failed to connect to identity service\n" |
@@ -4149,162 +4070,112 @@ msgstr "" | |||
4149 | msgid "%s failed at %s:%d: `%s'\n" | 4070 | msgid "%s failed at %s:%d: `%s'\n" |
4150 | msgstr "»%s« schlug fehl bei %s:%d mit dem Fehler: »%s«.\n" | 4071 | msgstr "»%s« schlug fehl bei %s:%d mit dem Fehler: »%s«.\n" |
4151 | 4072 | ||
4152 | #: src/gns/gnunet-gns-proxy.c:878 | 4073 | #: src/gns/gnunet-gns-proxy.c:887 |
4153 | #, c-format | 4074 | #, c-format |
4154 | msgid "Unsupported CURL SSL backend %d\n" | 4075 | msgid "Unsupported CURL SSL backend %d\n" |
4155 | msgstr "" | 4076 | msgstr "" |
4156 | 4077 | ||
4157 | #: src/gns/gnunet-gns-proxy.c:901 | 4078 | #: src/gns/gnunet-gns-proxy.c:910 |
4158 | #, fuzzy, c-format | 4079 | #, fuzzy, c-format |
4159 | msgid "Failed to fetch CN from cert: %s\n" | 4080 | msgid "Failed to fetch CN from cert: %s\n" |
4160 | msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n" | 4081 | msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n" |
4161 | 4082 | ||
4162 | #: src/gns/gnunet-gns-proxy.c:924 | 4083 | #: src/gns/gnunet-gns-proxy.c:933 |
4163 | #, fuzzy, c-format | 4084 | #, fuzzy, c-format |
4164 | msgid "Failed to initialize DANE: %s\n" | 4085 | msgid "Failed to initialize DANE: %s\n" |
4165 | msgstr "SQLite Datenbank konnte nicht initialisiert werden.\n" | 4086 | msgstr "SQLite Datenbank konnte nicht initialisiert werden.\n" |
4166 | 4087 | ||
4167 | #: src/gns/gnunet-gns-proxy.c:937 | 4088 | #: src/gns/gnunet-gns-proxy.c:946 |
4168 | #, fuzzy, c-format | 4089 | #, fuzzy, c-format |
4169 | msgid "Failed to parse DANE record: %s\n" | 4090 | msgid "Failed to parse DANE record: %s\n" |
4170 | msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n" | 4091 | msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n" |
4171 | 4092 | ||
4172 | #: src/gns/gnunet-gns-proxy.c:952 | 4093 | #: src/gns/gnunet-gns-proxy.c:961 |
4173 | #, fuzzy, c-format | 4094 | #, fuzzy, c-format |
4174 | msgid "Failed to verify TLS connection using DANE: %s\n" | 4095 | msgid "Failed to verify TLS connection using DANE: %s\n" |
4175 | msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" | 4096 | msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" |
4176 | 4097 | ||
4177 | #: src/gns/gnunet-gns-proxy.c:962 | 4098 | #: src/gns/gnunet-gns-proxy.c:971 |
4178 | #, c-format | 4099 | #, c-format |
4179 | msgid "Failed DANE verification failed with GnuTLS verify status code: %u\n" | 4100 | msgid "Failed DANE verification failed with GnuTLS verify status code: %u\n" |
4180 | msgstr "" | 4101 | msgstr "" |
4181 | 4102 | ||
4182 | #: src/gns/gnunet-gns-proxy.c:986 | 4103 | #: src/gns/gnunet-gns-proxy.c:995 |
4183 | #, c-format | 4104 | #, c-format |
4184 | msgid "SSL certificate subject name (%s) does not match `%s'\n" | 4105 | msgid "SSL certificate subject name (%s) does not match `%s'\n" |
4185 | msgstr "" | 4106 | msgstr "" |
4186 | 4107 | ||
4187 | #: src/gns/gnunet-gns-proxy.c:1095 | 4108 | #: src/gns/gnunet-gns-proxy.c:1104 |
4188 | #, c-format | 4109 | #, c-format |
4189 | msgid "Cookie domain `%s' supplied by server is invalid\n" | 4110 | msgid "Cookie domain `%s' supplied by server is invalid\n" |
4190 | msgstr "" | 4111 | msgstr "" |
4191 | 4112 | ||
4192 | #: src/gns/gnunet-gns-proxy.c:1699 | 4113 | #: src/gns/gnunet-gns-proxy.c:1709 |
4193 | #, fuzzy, c-format | 4114 | #, fuzzy, c-format |
4194 | msgid "Unsupported HTTP method `%s'\n" | 4115 | msgid "Unsupported HTTP method `%s'\n" |
4195 | msgstr "Kommando `%s' wird nicht unterstützt. Vorgang wird abgebrochen.\n" | 4116 | msgstr "Kommando `%s' wird nicht unterstützt. Vorgang wird abgebrochen.\n" |
4196 | 4117 | ||
4197 | #: src/gns/gnunet-gns-proxy.c:2162 | 4118 | #: src/gns/gnunet-gns-proxy.c:2172 |
4198 | #, fuzzy, c-format | 4119 | #, fuzzy, c-format |
4199 | msgid "Unable to import private key from file `%s'\n" | 4120 | msgid "Unable to import private key from file `%s'\n" |
4200 | msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':" | 4121 | msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':" |
4201 | 4122 | ||
4202 | #: src/gns/gnunet-gns-proxy.c:2192 | 4123 | #: src/gns/gnunet-gns-proxy.c:2202 |
4203 | #, fuzzy, c-format | 4124 | #, fuzzy, c-format |
4204 | msgid "Unable to import certificate %s\n" | 4125 | msgid "Unable to import certificate %s\n" |
4205 | msgstr "SQLite Datenbank konnte nicht initialisiert werden: %s.\n" | 4126 | msgstr "SQLite Datenbank konnte nicht initialisiert werden: %s.\n" |
4206 | 4127 | ||
4207 | #: src/gns/gnunet-gns-proxy.c:2365 | 4128 | #: src/gns/gnunet-gns-proxy.c:2375 |
4208 | #, fuzzy, c-format | 4129 | #, fuzzy, c-format |
4209 | msgid "Failed to start HTTPS server for `%s'\n" | 4130 | msgid "Failed to start HTTPS server for `%s'\n" |
4210 | msgstr "Der Transportdienst auf Port %d konnte nicht gestartet werden.\n" | 4131 | msgstr "Der Transportdienst auf Port %d konnte nicht gestartet werden.\n" |
4211 | 4132 | ||
4212 | #: src/gns/gnunet-gns-proxy.c:2384 src/rest/gnunet-rest-server.c:533 | 4133 | #: src/gns/gnunet-gns-proxy.c:2394 src/rest/gnunet-rest-server.c:533 |
4213 | #, fuzzy | 4134 | #, fuzzy |
4214 | msgid "Failed to pass client to MHD\n" | 4135 | msgid "Failed to pass client to MHD\n" |
4215 | msgstr "Fehler beim Starten der Collection.\n" | 4136 | msgstr "Fehler beim Starten der Collection.\n" |
4216 | 4137 | ||
4217 | #: src/gns/gnunet-gns-proxy.c:2704 | 4138 | #: src/gns/gnunet-gns-proxy.c:2716 |
4218 | #, c-format | 4139 | #, c-format |
4219 | msgid "Unsupported socks version %d\n" | 4140 | msgid "Unsupported socks version %d\n" |
4220 | msgstr "" | 4141 | msgstr "" |
4221 | 4142 | ||
4222 | #: src/gns/gnunet-gns-proxy.c:2733 | 4143 | #: src/gns/gnunet-gns-proxy.c:2745 |
4223 | #, fuzzy, c-format | 4144 | #, fuzzy, c-format |
4224 | msgid "Unsupported socks command %d\n" | 4145 | msgid "Unsupported socks command %d\n" |
4225 | msgstr "Kommando `%s' wird nicht unterstützt. Vorgang wird abgebrochen.\n" | 4146 | msgstr "Kommando `%s' wird nicht unterstützt. Vorgang wird abgebrochen.\n" |
4226 | 4147 | ||
4227 | #: src/gns/gnunet-gns-proxy.c:2751 src/gns/gnunet-gns-proxy.c:2780 | 4148 | #: src/gns/gnunet-gns-proxy.c:2763 src/gns/gnunet-gns-proxy.c:2792 |
4228 | msgid "SSL connection to plain IPv4 address requested\n" | 4149 | msgid "SSL connection to plain IPv4 address requested\n" |
4229 | msgstr "" | 4150 | msgstr "" |
4230 | 4151 | ||
4231 | #: src/gns/gnunet-gns-proxy.c:2830 | 4152 | #: src/gns/gnunet-gns-proxy.c:2842 |
4232 | #, c-format | 4153 | #, c-format |
4233 | msgid "Unsupported socks address type %d\n" | 4154 | msgid "Unsupported socks address type %d\n" |
4234 | msgstr "" | 4155 | msgstr "" |
4235 | 4156 | ||
4236 | #: src/gns/gnunet-gns-proxy.c:3165 src/gns/gnunet-service-gns.c:403 | 4157 | #: src/gns/gnunet-gns-proxy.c:3177 src/gns/gnunet-service-gns.c:403 |
4237 | #, c-format | 4158 | #, c-format |
4238 | msgid "No ego configured for `%s`\n" | 4159 | msgid "No ego configured for `%s`\n" |
4239 | msgstr "" | 4160 | msgstr "" |
4240 | 4161 | ||
4241 | #: src/gns/gnunet-gns-proxy.c:3226 | 4162 | #: src/gns/gnunet-gns-proxy.c:3238 |
4242 | #, fuzzy, c-format | 4163 | #, fuzzy, c-format |
4243 | msgid "Failed to load SSL/TLS key and certificate from `%s'\n" | 4164 | msgid "Failed to load SSL/TLS key and certificate from `%s'\n" |
4244 | msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n" | 4165 | msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n" |
4245 | 4166 | ||
4246 | #: src/gns/gnunet-gns-proxy.c:3269 | 4167 | #: src/gns/gnunet-gns-proxy.c:3281 |
4247 | msgid "listen on specified port (default: 7777)" | 4168 | msgid "listen on specified port (default: 7777)" |
4248 | msgstr "" | 4169 | msgstr "" |
4249 | 4170 | ||
4250 | #: src/gns/gnunet-gns-proxy.c:3275 | 4171 | #: src/gns/gnunet-gns-proxy.c:3287 |
4251 | msgid "pem file to use as CA" | 4172 | msgid "pem file to use as CA" |
4252 | msgstr "" | 4173 | msgstr "" |
4253 | 4174 | ||
4254 | #: src/gns/gnunet-gns-proxy.c:3300 | 4175 | #: src/gns/gnunet-gns-proxy.c:3312 |
4255 | msgid "GNUnet GNS proxy" | 4176 | msgid "GNUnet GNS proxy" |
4256 | msgstr "" | 4177 | msgstr "" |
4257 | 4178 | ||
4258 | #: src/gns/gnunet-gns.c:235 src/gns/plugin_rest_gns.c:346 | ||
4259 | #, c-format | ||
4260 | msgid "Invalid typename specified, assuming `ANY'\n" | ||
4261 | msgstr "" | ||
4262 | |||
4263 | #: src/gns/gnunet-gns.c:252 | ||
4264 | #, c-format | ||
4265 | msgid "Please specify name to lookup!\n" | ||
4266 | msgstr "" | ||
4267 | |||
4268 | #: src/gns/gnunet-gns.c:276 | ||
4269 | #, c-format | ||
4270 | msgid "Ego for `%s' not found, cannot perform lookup.\n" | ||
4271 | msgstr "" | ||
4272 | |||
4273 | #: src/gns/gnunet-gns.c:374 | ||
4274 | #, c-format | ||
4275 | msgid "Public key `%s' is not well-formed\n" | ||
4276 | msgstr "" | ||
4277 | |||
4278 | #: src/gns/gnunet-gns.c:428 | ||
4279 | msgid "Lookup a record for the given name" | ||
4280 | msgstr "" | ||
4281 | |||
4282 | #: src/gns/gnunet-gns.c:434 | ||
4283 | #, fuzzy | ||
4284 | msgid "Specify the type of the record to lookup" | ||
4285 | msgstr "Die Priorität des Inhalts angeben" | ||
4286 | |||
4287 | #: src/gns/gnunet-gns.c:440 | ||
4288 | msgid "Specify timeout for the lookup" | ||
4289 | msgstr "" | ||
4290 | |||
4291 | #: src/gns/gnunet-gns.c:445 | ||
4292 | msgid "No unneeded output" | ||
4293 | msgstr "" | ||
4294 | |||
4295 | #: src/gns/gnunet-gns.c:451 | ||
4296 | msgid "Specify the public key of the zone to lookup the record in" | ||
4297 | msgstr "" | ||
4298 | |||
4299 | #: src/gns/gnunet-gns.c:457 | ||
4300 | msgid "Specify the name of the ego of the zone to lookup the record in" | ||
4301 | msgstr "" | ||
4302 | |||
4303 | #: src/gns/gnunet-gns.c:476 | ||
4304 | #, fuzzy | ||
4305 | msgid "GNUnet GNS resolver tool" | ||
4306 | msgstr "GNUnet Netzwerk Topologie tracen." | ||
4307 | |||
4308 | #: src/gns/gnunet-service-gns.c:442 | 4179 | #: src/gns/gnunet-service-gns.c:442 |
4309 | #, fuzzy | 4180 | #, fuzzy |
4310 | msgid "Failed to connect to the namecache!\n" | 4181 | msgid "Failed to connect to the namecache!\n" |
@@ -4370,35 +4241,45 @@ msgstr "" | |||
4370 | msgid "Hostname `%s' is not well-formed, resolution fails\n" | 4241 | msgid "Hostname `%s' is not well-formed, resolution fails\n" |
4371 | msgstr "" | 4242 | msgstr "" |
4372 | 4243 | ||
4373 | #: src/gns/plugin_gnsrecord_gns.c:179 | 4244 | #: src/gns/plugin_gnsrecord_gns.c:203 |
4374 | #, c-format | 4245 | #, c-format |
4375 | msgid "Unable to parse PKEY record `%s'\n" | 4246 | msgid "Unable to parse PKEY record `%s'\n" |
4376 | msgstr "" | 4247 | msgstr "" |
4377 | 4248 | ||
4378 | #: src/gns/plugin_gnsrecord_gns.c:208 | 4249 | #: src/gns/plugin_gnsrecord_gns.c:232 |
4379 | #, fuzzy, c-format | 4250 | #, fuzzy, c-format |
4380 | msgid "Unable to parse GNS2DNS record `%s'\n" | 4251 | msgid "Unable to parse GNS2DNS record `%s'\n" |
4381 | msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n" | 4252 | msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n" |
4382 | 4253 | ||
4383 | #: src/gns/plugin_gnsrecord_gns.c:229 | 4254 | #: src/gns/plugin_gnsrecord_gns.c:253 |
4384 | #, c-format | 4255 | #, c-format |
4385 | msgid "Failed to serialize GNS2DNS record with value `%s'\n" | 4256 | msgid "Failed to serialize GNS2DNS record with value `%s'\n" |
4386 | msgstr "" | 4257 | msgstr "" |
4387 | 4258 | ||
4388 | #: src/gns/plugin_gnsrecord_gns.c:252 | 4259 | #: src/gns/plugin_gnsrecord_gns.c:276 |
4389 | #, fuzzy, c-format | 4260 | #, fuzzy, c-format |
4390 | msgid "Unable to parse VPN record string `%s'\n" | 4261 | msgid "Unable to parse VPN record string `%s'\n" |
4391 | msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':" | 4262 | msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':" |
4392 | 4263 | ||
4393 | #: src/gns/plugin_gnsrecord_gns.c:288 | 4264 | #: src/gns/plugin_gnsrecord_gns.c:312 |
4394 | #, fuzzy, c-format | 4265 | #, fuzzy, c-format |
4395 | msgid "Unable to parse BOX record string `%s'\n" | 4266 | msgid "Unable to parse BOX record string `%s'\n" |
4396 | msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':" | 4267 | msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':" |
4397 | 4268 | ||
4269 | #: src/gns/plugin_gnsrecord_gns.c:360 | ||
4270 | #, fuzzy, c-format | ||
4271 | msgid "Unable to parse REVERSE record string `%s'\n" | ||
4272 | msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':" | ||
4273 | |||
4398 | #: src/gns/plugin_rest_gns.c:384 | 4274 | #: src/gns/plugin_rest_gns.c:384 |
4399 | msgid "Ego for not found, cannot perform lookup.\n" | 4275 | msgid "Ego for not found, cannot perform lookup.\n" |
4400 | msgstr "" | 4276 | msgstr "" |
4401 | 4277 | ||
4278 | #: src/gns/plugin_rest_gns.c:668 | ||
4279 | #, fuzzy | ||
4280 | msgid "GNS REST API initialized\n" | ||
4281 | msgstr " Verbindung fehlgeschlagen\n" | ||
4282 | |||
4402 | #: src/gnsrecord/plugin_gnsrecord_dns.c:359 | 4283 | #: src/gnsrecord/plugin_gnsrecord_dns.c:359 |
4403 | #, c-format | 4284 | #, c-format |
4404 | msgid "Unable to parse IPv4 address `%s'\n" | 4285 | msgid "Unable to parse IPv4 address `%s'\n" |
@@ -4506,34 +4387,34 @@ msgstr "PID konnte nicht in Datei `%s' geschrieben werden: %s.\n" | |||
4506 | msgid "Modified %u addresses, wrote %u bytes\n" | 4387 | msgid "Modified %u addresses, wrote %u bytes\n" |
4507 | msgstr "" | 4388 | msgstr "" |
4508 | 4389 | ||
4509 | #: src/hello/hello.c:1103 | 4390 | #: src/hello/hello.c:1110 |
4510 | msgid "Failed to parse HELLO message: missing expiration time\n" | 4391 | msgid "Failed to parse HELLO message: missing expiration time\n" |
4511 | msgstr "" | 4392 | msgstr "" |
4512 | 4393 | ||
4513 | #: src/hello/hello.c:1112 | 4394 | #: src/hello/hello.c:1119 |
4514 | msgid "Failed to parse HELLO message: invalid expiration time\n" | 4395 | msgid "Failed to parse HELLO message: invalid expiration time\n" |
4515 | msgstr "" | 4396 | msgstr "" |
4516 | 4397 | ||
4517 | #: src/hello/hello.c:1122 | 4398 | #: src/hello/hello.c:1129 |
4518 | #, fuzzy | 4399 | #, fuzzy |
4519 | msgid "Failed to parse HELLO message: malformed\n" | 4400 | msgid "Failed to parse HELLO message: malformed\n" |
4520 | msgstr "Fehler beim Senden der `%s' Nachricht an gnunetd\n" | 4401 | msgstr "Fehler beim Senden der `%s' Nachricht an gnunetd\n" |
4521 | 4402 | ||
4522 | #: src/hello/hello.c:1133 | 4403 | #: src/hello/hello.c:1140 |
4523 | msgid "Failed to parse HELLO message: missing transport plugin\n" | 4404 | msgid "Failed to parse HELLO message: missing transport plugin\n" |
4524 | msgstr "" | 4405 | msgstr "" |
4525 | 4406 | ||
4526 | #: src/hello/hello.c:1151 | 4407 | #: src/hello/hello.c:1158 |
4527 | #, fuzzy, c-format | 4408 | #, fuzzy, c-format |
4528 | msgid "Plugin `%s' not found, skipping address\n" | 4409 | msgid "Plugin `%s' not found, skipping address\n" |
4529 | msgstr "Kommando `%s' wurde nicht gefunden!\n" | 4410 | msgstr "Kommando `%s' wurde nicht gefunden!\n" |
4530 | 4411 | ||
4531 | #: src/hello/hello.c:1159 | 4412 | #: src/hello/hello.c:1166 |
4532 | #, c-format | 4413 | #, c-format |
4533 | msgid "Plugin `%s' does not support URIs yet\n" | 4414 | msgid "Plugin `%s' does not support URIs yet\n" |
4534 | msgstr "" | 4415 | msgstr "" |
4535 | 4416 | ||
4536 | #: src/hello/hello.c:1174 | 4417 | #: src/hello/hello.c:1181 |
4537 | #, fuzzy, c-format | 4418 | #, fuzzy, c-format |
4538 | msgid "Failed to parse `%s' as an address for plugin `%s'\n" | 4419 | msgid "Failed to parse `%s' as an address for plugin `%s'\n" |
4539 | msgstr "Fehler beim Aktualisieren der Daten des Moduls `%s'\n" | 4420 | msgstr "Fehler beim Aktualisieren der Daten des Moduls `%s'\n" |
@@ -4787,7 +4668,7 @@ msgid "# hostlist advertisements send" | |||
4787 | msgstr "# Bekanntmachungen von anderen übertragen" | 4668 | msgstr "# Bekanntmachungen von anderen übertragen" |
4788 | 4669 | ||
4789 | #: src/hostlist/gnunet-daemon-hostlist_server.c:679 | 4670 | #: src/hostlist/gnunet-daemon-hostlist_server.c:679 |
4790 | #: src/transport/gnunet-service-transport.c:2803 | 4671 | #: src/transport/gnunet-service-transport.c:2815 |
4791 | #, fuzzy | 4672 | #, fuzzy |
4792 | msgid "Could not access PEERINFO service. Exiting.\n" | 4673 | msgid "Could not access PEERINFO service. Exiting.\n" |
4793 | msgstr "Auf die Namespace Informationen konnte nicht zugegriffen werden.\n" | 4674 | msgstr "Auf die Namespace Informationen konnte nicht zugegriffen werden.\n" |
@@ -4830,53 +4711,6 @@ msgstr "»%s« ist keine gültige IP-Adresse.\n" | |||
4830 | msgid "Could not start hostlist HTTP server on port %u\n" | 4711 | msgid "Could not start hostlist HTTP server on port %u\n" |
4831 | msgstr "Der Transportdienst auf Port %d konnte nicht gestartet werden.\n" | 4712 | msgstr "Der Transportdienst auf Port %d konnte nicht gestartet werden.\n" |
4832 | 4713 | ||
4833 | #: src/identity-provider/gnunet-idp.c:348 | ||
4834 | #, fuzzy | ||
4835 | msgid "Ego is required\n" | ||
4836 | msgstr "Option `%s' macht keinen Sinn ohne die Option `%s'.\n" | ||
4837 | |||
4838 | #: src/identity-provider/gnunet-idp.c:370 | ||
4839 | msgid "Add attribute" | ||
4840 | msgstr "" | ||
4841 | |||
4842 | #: src/identity-provider/gnunet-idp.c:376 | ||
4843 | msgid "Attribute value" | ||
4844 | msgstr "" | ||
4845 | |||
4846 | #: src/identity-provider/gnunet-idp.c:381 | ||
4847 | msgid "Ego" | ||
4848 | msgstr "" | ||
4849 | |||
4850 | #: src/identity-provider/gnunet-idp.c:386 | ||
4851 | msgid "Audience (relying party)" | ||
4852 | msgstr "" | ||
4853 | |||
4854 | #: src/identity-provider/gnunet-idp.c:390 | ||
4855 | msgid "List attributes for Ego" | ||
4856 | msgstr "" | ||
4857 | |||
4858 | #: src/identity-provider/gnunet-idp.c:395 | ||
4859 | msgid "Issue a ticket" | ||
4860 | msgstr "" | ||
4861 | |||
4862 | #: src/identity-provider/gnunet-idp.c:400 | ||
4863 | msgid "Consume a ticket" | ||
4864 | msgstr "" | ||
4865 | |||
4866 | #: src/identity-provider/gnunet-idp.c:405 | ||
4867 | msgid "Revoke a ticket" | ||
4868 | msgstr "" | ||
4869 | |||
4870 | #: src/identity-provider/identity_provider_api.c:429 | ||
4871 | #, fuzzy | ||
4872 | msgid "failed to store record\n" | ||
4873 | msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n" | ||
4874 | |||
4875 | #: src/identity-provider/plugin_rest_identity_provider.c:1175 | ||
4876 | #, fuzzy | ||
4877 | msgid "Identity Provider REST API initialized\n" | ||
4878 | msgstr " Verbindung fehlgeschlagen\n" | ||
4879 | |||
4880 | #: src/identity/gnunet-identity.c:179 | 4714 | #: src/identity/gnunet-identity.c:179 |
4881 | #, fuzzy, c-format | 4715 | #, fuzzy, c-format |
4882 | msgid "Failed to create ego: %s\n" | 4716 | msgid "Failed to create ego: %s\n" |
@@ -4964,10 +4798,33 @@ msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':" | |||
4964 | msgid "Failed to create directory `%s' for storing egos\n" | 4798 | msgid "Failed to create directory `%s' for storing egos\n" |
4965 | msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n" | 4799 | msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n" |
4966 | 4800 | ||
4967 | #: src/identity/plugin_rest_identity.c:964 | 4801 | #: src/identity/plugin_rest_identity.c:967 |
4968 | msgid "Identity REST API initialized\n" | 4802 | msgid "Identity REST API initialized\n" |
4969 | msgstr "" | 4803 | msgstr "" |
4970 | 4804 | ||
4805 | #: src/identity-provider/gnunet-identity-token.c:66 | ||
4806 | #, fuzzy | ||
4807 | msgid "Option `-t' is required\n" | ||
4808 | msgstr "Option `%s' macht keinen Sinn ohne die Option `%s'.\n" | ||
4809 | |||
4810 | #: src/identity-provider/gnunet-identity-token.c:77 | ||
4811 | #, fuzzy, c-format | ||
4812 | msgid "Token `%s' is malformed\n" | ||
4813 | msgstr "Schlüssel »%s« ist gültig\n" | ||
4814 | |||
4815 | #: src/identity-provider/gnunet-identity-token.c:166 | ||
4816 | msgid "GNUid token" | ||
4817 | msgstr "" | ||
4818 | |||
4819 | #: src/identity-provider/gnunet-identity-token.c:171 | ||
4820 | msgid "Print token contents" | ||
4821 | msgstr "" | ||
4822 | |||
4823 | #: src/identity-provider/plugin_rest_identity_provider.c:1166 | ||
4824 | #, fuzzy | ||
4825 | msgid "Identity Token REST API initialized\n" | ||
4826 | msgstr " Verbindung fehlgeschlagen\n" | ||
4827 | |||
4971 | #: src/json/json.c:119 | 4828 | #: src/json/json.c:119 |
4972 | #, fuzzy, c-format | 4829 | #, fuzzy, c-format |
4973 | msgid "Failed to parse JSON in option `%s': %s (%s)\n" | 4830 | msgid "Failed to parse JSON in option `%s': %s (%s)\n" |
@@ -5069,79 +4926,19 @@ msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n" | |||
5069 | msgid "flat plugin running\n" | 4926 | msgid "flat plugin running\n" |
5070 | msgstr "Sqlite-Datenbank läuft\n" | 4927 | msgstr "Sqlite-Datenbank läuft\n" |
5071 | 4928 | ||
5072 | #: src/namestore/gnunet-namestore-fcfsd.c:508 | ||
5073 | #, fuzzy, c-format | ||
5074 | msgid "Unsupported form value `%s'\n" | ||
5075 | msgstr "Kommando `%s' wird nicht unterstützt. Vorgang wird abgebrochen.\n" | ||
5076 | |||
5077 | #: src/namestore/gnunet-namestore-fcfsd.c:535 | ||
5078 | #, fuzzy, c-format | ||
5079 | msgid "Failed to create record for domain `%s': %s\n" | ||
5080 | msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n" | ||
5081 | |||
5082 | #: src/namestore/gnunet-namestore-fcfsd.c:555 | ||
5083 | msgid "Error when mapping zone to name\n" | ||
5084 | msgstr "" | ||
5085 | |||
5086 | #: src/namestore/gnunet-namestore-fcfsd.c:585 | ||
5087 | #, c-format | ||
5088 | msgid "Found existing name `%s' for the given key\n" | ||
5089 | msgstr "" | ||
5090 | |||
5091 | #: src/namestore/gnunet-namestore-fcfsd.c:662 | ||
5092 | #, c-format | ||
5093 | msgid "Found %u existing records for domain `%s'\n" | ||
5094 | msgstr "" | ||
5095 | |||
5096 | #: src/namestore/gnunet-namestore-fcfsd.c:718 | ||
5097 | #, fuzzy, c-format | ||
5098 | msgid "Failed to create page for `%s'\n" | ||
5099 | msgstr "Fehler beim Aktualisieren der Daten des Moduls `%s'\n" | ||
5100 | |||
5101 | #: src/namestore/gnunet-namestore-fcfsd.c:734 | ||
5102 | #, fuzzy, c-format | ||
5103 | msgid "Failed to setup post processor for `%s'\n" | ||
5104 | msgstr "Fehler beim Aktualisieren der Daten des Moduls `%s'\n" | ||
5105 | |||
5106 | #: src/namestore/gnunet-namestore-fcfsd.c:770 | ||
5107 | msgid "Domain name must not contain `.'\n" | ||
5108 | msgstr "" | ||
5109 | |||
5110 | #: src/namestore/gnunet-namestore-fcfsd.c:778 | ||
5111 | msgid "Domain name must not contain `+'\n" | ||
5112 | msgstr "" | ||
5113 | |||
5114 | #: src/namestore/gnunet-namestore-fcfsd.c:974 | ||
5115 | msgid "No ego configured for `fcfsd` subsystem\n" | ||
5116 | msgstr "" | ||
5117 | |||
5118 | #: src/namestore/gnunet-namestore-fcfsd.c:1000 | ||
5119 | #, fuzzy | ||
5120 | msgid "Failed to start HTTP server\n" | ||
5121 | msgstr "Fehler beim Senden einer `%s' Anfrage an den SMTP Server.\n" | ||
5122 | |||
5123 | #: src/namestore/gnunet-namestore-fcfsd.c:1042 | ||
5124 | #, fuzzy | ||
5125 | msgid "Failed to connect to identity\n" | ||
5126 | msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" | ||
5127 | |||
5128 | #: src/namestore/gnunet-namestore-fcfsd.c:1074 | ||
5129 | msgid "GNU Name System First Come First Serve name registration service" | ||
5130 | msgstr "" | ||
5131 | |||
5132 | #: src/namestore/gnunet-namestore.c:301 | 4929 | #: src/namestore/gnunet-namestore.c:301 |
5133 | #, c-format | 4930 | #, c-format |
5134 | msgid "Adding record failed: %s\n" | 4931 | msgid "Adding record failed: %s\n" |
5135 | msgstr "" | 4932 | msgstr "" |
5136 | 4933 | ||
5137 | #: src/namestore/gnunet-namestore.c:330 | 4934 | #: src/namestore/gnunet-namestore.c:330 |
5138 | #: src/namestore/plugin_rest_namestore.c:567 | 4935 | #: src/namestore/plugin_rest_namestore.c:562 |
5139 | #, c-format | 4936 | #, c-format |
5140 | msgid "Deleting record failed, record does not exist%s%s\n" | 4937 | msgid "Deleting record failed, record does not exist%s%s\n" |
5141 | msgstr "" | 4938 | msgstr "" |
5142 | 4939 | ||
5143 | #: src/namestore/gnunet-namestore.c:337 | 4940 | #: src/namestore/gnunet-namestore.c:337 |
5144 | #: src/namestore/plugin_rest_namestore.c:576 | 4941 | #: src/namestore/plugin_rest_namestore.c:571 |
5145 | #, c-format | 4942 | #, c-format |
5146 | msgid "Deleting record failed%s%s\n" | 4943 | msgid "Deleting record failed%s%s\n" |
5147 | msgstr "" | 4944 | msgstr "" |
@@ -5159,7 +4956,7 @@ msgid "Records already exist under `%s', cannot add `%s' record.\n" | |||
5159 | msgstr "" | 4956 | msgstr "" |
5160 | 4957 | ||
5161 | #: src/namestore/gnunet-namestore.c:698 | 4958 | #: src/namestore/gnunet-namestore.c:698 |
5162 | #: src/namestore/plugin_rest_namestore.c:602 | 4959 | #: src/namestore/plugin_rest_namestore.c:597 |
5163 | #, c-format | 4960 | #, c-format |
5164 | msgid "There are no records under label `%s' that could be deleted.\n" | 4961 | msgid "There are no records under label `%s' that could be deleted.\n" |
5165 | msgstr "" | 4962 | msgstr "" |
@@ -5170,11 +4967,24 @@ msgid "" | |||
5170 | "There are no records under label `%s' that match the request for deletion.\n" | 4967 | "There are no records under label `%s' that match the request for deletion.\n" |
5171 | msgstr "" | 4968 | msgstr "" |
5172 | 4969 | ||
4970 | #: src/namestore/gnunet-namestore.c:776 | ||
4971 | #: src/namestore/plugin_rest_namestore.c:1004 | ||
4972 | #, fuzzy, c-format | ||
4973 | msgid "Ego `%s' not known to identity service\n" | ||
4974 | msgstr "`%s': unbekannter Dienst: %s\n" | ||
4975 | |||
5173 | #: src/namestore/gnunet-namestore.c:791 | 4976 | #: src/namestore/gnunet-namestore.c:791 |
5174 | #, c-format | 4977 | #, c-format |
5175 | msgid "No options given\n" | 4978 | msgid "No options given\n" |
5176 | msgstr "" | 4979 | msgstr "" |
5177 | 4980 | ||
4981 | #: src/namestore/gnunet-namestore.c:802 | ||
4982 | #: src/namestore/gnunet-namestore-fcfsd.c:1034 | ||
4983 | #: src/namestore/plugin_rest_namestore.c:1017 | ||
4984 | #, fuzzy | ||
4985 | msgid "Failed to connect to namestore\n" | ||
4986 | msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" | ||
4987 | |||
5178 | #: src/namestore/gnunet-namestore.c:810 src/namestore/gnunet-namestore.c:819 | 4988 | #: src/namestore/gnunet-namestore.c:810 src/namestore/gnunet-namestore.c:819 |
5179 | #: src/namestore/gnunet-namestore.c:838 src/namestore/gnunet-namestore.c:861 | 4989 | #: src/namestore/gnunet-namestore.c:838 src/namestore/gnunet-namestore.c:861 |
5180 | #: src/namestore/gnunet-namestore.c:915 | 4990 | #: src/namestore/gnunet-namestore.c:915 |
@@ -5188,14 +4998,14 @@ msgid "add" | |||
5188 | msgstr "" | 4998 | msgstr "" |
5189 | 4999 | ||
5190 | #: src/namestore/gnunet-namestore.c:829 | 5000 | #: src/namestore/gnunet-namestore.c:829 |
5191 | #: src/namestore/plugin_rest_namestore.c:676 | 5001 | #: src/namestore/plugin_rest_namestore.c:671 |
5192 | #, fuzzy, c-format | 5002 | #, fuzzy, c-format |
5193 | msgid "Unsupported type `%s'\n" | 5003 | msgid "Unsupported type `%s'\n" |
5194 | msgstr "Kommando `%s' wird nicht unterstützt. Vorgang wird abgebrochen.\n" | 5004 | msgstr "Kommando `%s' wird nicht unterstützt. Vorgang wird abgebrochen.\n" |
5195 | 5005 | ||
5196 | #: src/namestore/gnunet-namestore.c:851 | 5006 | #: src/namestore/gnunet-namestore.c:851 |
5197 | #: src/namestore/plugin_rest_namestore.c:694 | 5007 | #: src/namestore/plugin_rest_namestore.c:689 |
5198 | #: src/namestore/plugin_rest_namestore.c:734 | 5008 | #: src/namestore/plugin_rest_namestore.c:729 |
5199 | #, fuzzy, c-format | 5009 | #, fuzzy, c-format |
5200 | msgid "Value `%s' invalid for record type `%s'\n" | 5010 | msgid "Value `%s' invalid for record type `%s'\n" |
5201 | msgstr "%s: Symbolwert `%s' ist ungültig für %s\n" | 5011 | msgstr "%s: Symbolwert `%s' ist ungültig für %s\n" |
@@ -5225,13 +5035,13 @@ msgid "Invalid nick `%s'\n" | |||
5225 | msgstr "Ungültiger Parameter: `%s'\n" | 5035 | msgstr "Ungültiger Parameter: `%s'\n" |
5226 | 5036 | ||
5227 | #: src/namestore/gnunet-namestore.c:1051 | 5037 | #: src/namestore/gnunet-namestore.c:1051 |
5228 | #: src/namestore/plugin_rest_namestore.c:1052 | 5038 | #: src/namestore/plugin_rest_namestore.c:1047 |
5229 | #, c-format | 5039 | #, c-format |
5230 | msgid "No default ego configured in identity service\n" | 5040 | msgid "No default ego configured in identity service\n" |
5231 | msgstr "" | 5041 | msgstr "" |
5232 | 5042 | ||
5233 | #: src/namestore/gnunet-namestore.c:1108 | 5043 | #: src/namestore/gnunet-namestore.c:1108 |
5234 | #: src/namestore/plugin_rest_namestore.c:1148 | 5044 | #: src/namestore/plugin_rest_namestore.c:1143 |
5235 | #, fuzzy, c-format | 5045 | #, fuzzy, c-format |
5236 | msgid "Cannot connect to identity service\n" | 5046 | msgid "Cannot connect to identity service\n" |
5237 | msgstr "Verbindung zu %u.%u.%u.%u:%u fehlgeschlagen: %s\n" | 5047 | msgstr "Verbindung zu %u.%u.%u.%u:%u fehlgeschlagen: %s\n" |
@@ -5291,6 +5101,66 @@ msgstr "" | |||
5291 | msgid "name of the ego controlling the zone" | 5101 | msgid "name of the ego controlling the zone" |
5292 | msgstr "" | 5102 | msgstr "" |
5293 | 5103 | ||
5104 | #: src/namestore/gnunet-namestore-fcfsd.c:508 | ||
5105 | #, fuzzy, c-format | ||
5106 | msgid "Unsupported form value `%s'\n" | ||
5107 | msgstr "Kommando `%s' wird nicht unterstützt. Vorgang wird abgebrochen.\n" | ||
5108 | |||
5109 | #: src/namestore/gnunet-namestore-fcfsd.c:535 | ||
5110 | #, fuzzy, c-format | ||
5111 | msgid "Failed to create record for domain `%s': %s\n" | ||
5112 | msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n" | ||
5113 | |||
5114 | #: src/namestore/gnunet-namestore-fcfsd.c:555 | ||
5115 | msgid "Error when mapping zone to name\n" | ||
5116 | msgstr "" | ||
5117 | |||
5118 | #: src/namestore/gnunet-namestore-fcfsd.c:585 | ||
5119 | #, c-format | ||
5120 | msgid "Found existing name `%s' for the given key\n" | ||
5121 | msgstr "" | ||
5122 | |||
5123 | #: src/namestore/gnunet-namestore-fcfsd.c:662 | ||
5124 | #, c-format | ||
5125 | msgid "Found %u existing records for domain `%s'\n" | ||
5126 | msgstr "" | ||
5127 | |||
5128 | #: src/namestore/gnunet-namestore-fcfsd.c:718 | ||
5129 | #, fuzzy, c-format | ||
5130 | msgid "Failed to create page for `%s'\n" | ||
5131 | msgstr "Fehler beim Aktualisieren der Daten des Moduls `%s'\n" | ||
5132 | |||
5133 | #: src/namestore/gnunet-namestore-fcfsd.c:734 | ||
5134 | #, fuzzy, c-format | ||
5135 | msgid "Failed to setup post processor for `%s'\n" | ||
5136 | msgstr "Fehler beim Aktualisieren der Daten des Moduls `%s'\n" | ||
5137 | |||
5138 | #: src/namestore/gnunet-namestore-fcfsd.c:770 | ||
5139 | msgid "Domain name must not contain `.'\n" | ||
5140 | msgstr "" | ||
5141 | |||
5142 | #: src/namestore/gnunet-namestore-fcfsd.c:778 | ||
5143 | msgid "Domain name must not contain `+'\n" | ||
5144 | msgstr "" | ||
5145 | |||
5146 | #: src/namestore/gnunet-namestore-fcfsd.c:974 | ||
5147 | msgid "No ego configured for `fcfsd` subsystem\n" | ||
5148 | msgstr "" | ||
5149 | |||
5150 | #: src/namestore/gnunet-namestore-fcfsd.c:1000 | ||
5151 | #, fuzzy | ||
5152 | msgid "Failed to start HTTP server\n" | ||
5153 | msgstr "Fehler beim Senden einer `%s' Anfrage an den SMTP Server.\n" | ||
5154 | |||
5155 | #: src/namestore/gnunet-namestore-fcfsd.c:1042 | ||
5156 | #, fuzzy | ||
5157 | msgid "Failed to connect to identity\n" | ||
5158 | msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" | ||
5159 | |||
5160 | #: src/namestore/gnunet-namestore-fcfsd.c:1074 | ||
5161 | msgid "GNU Name System First Come First Serve name registration service" | ||
5162 | msgstr "" | ||
5163 | |||
5294 | #: src/namestore/gnunet-service-namestore.c:615 | 5164 | #: src/namestore/gnunet-service-namestore.c:615 |
5295 | #, c-format | 5165 | #, c-format |
5296 | msgid "Failed to replicate block in namecache: %s\n" | 5166 | msgid "Failed to replicate block in namecache: %s\n" |
@@ -5305,7 +5175,7 @@ msgstr "" | |||
5305 | msgid "flat file database running\n" | 5175 | msgid "flat file database running\n" |
5306 | msgstr "Sqlite-Datenbank läuft\n" | 5176 | msgstr "Sqlite-Datenbank läuft\n" |
5307 | 5177 | ||
5308 | #: src/namestore/plugin_rest_namestore.c:1193 | 5178 | #: src/namestore/plugin_rest_namestore.c:1188 |
5309 | #, fuzzy | 5179 | #, fuzzy |
5310 | msgid "Namestore REST API initialized\n" | 5180 | msgid "Namestore REST API initialized\n" |
5311 | msgstr " Verbindung fehlgeschlagen\n" | 5181 | msgstr " Verbindung fehlgeschlagen\n" |
@@ -5595,6 +5465,10 @@ msgstr "Kommando `%s' wurde nicht gefunden!\n" | |||
5595 | msgid "`upnpc' command not found\n" | 5465 | msgid "`upnpc' command not found\n" |
5596 | msgstr "Kommando `%s' wurde nicht gefunden!\n" | 5466 | msgstr "Kommando `%s' wurde nicht gefunden!\n" |
5597 | 5467 | ||
5468 | #: src/nse/gnunet-nse.c:122 | ||
5469 | msgid "Show network size estimates from NSE service." | ||
5470 | msgstr "" | ||
5471 | |||
5598 | #: src/nse/gnunet-nse-profiler.c:842 | 5472 | #: src/nse/gnunet-nse-profiler.c:842 |
5599 | msgid "limit to the number of connections to NSE services, 0 for none" | 5473 | msgid "limit to the number of connections to NSE services, 0 for none" |
5600 | msgstr "" | 5474 | msgstr "" |
@@ -5619,15 +5493,68 @@ msgstr "" | |||
5619 | msgid "Measure quality and performance of the NSE service." | 5493 | msgid "Measure quality and performance of the NSE service." |
5620 | msgstr "" | 5494 | msgstr "" |
5621 | 5495 | ||
5622 | #: src/nse/gnunet-nse.c:122 | ||
5623 | msgid "Show network size estimates from NSE service." | ||
5624 | msgstr "" | ||
5625 | |||
5626 | #: src/nse/gnunet-service-nse.c:1534 | 5496 | #: src/nse/gnunet-service-nse.c:1534 |
5627 | #: src/revocation/gnunet-service-revocation.c:838 src/util/gnunet-scrypt.c:276 | 5497 | #: src/revocation/gnunet-service-revocation.c:840 src/util/gnunet-scrypt.c:276 |
5628 | msgid "Value is too large.\n" | 5498 | msgid "Value is too large.\n" |
5629 | msgstr "" | 5499 | msgstr "" |
5630 | 5500 | ||
5501 | #: src/peerinfo/gnunet-service-peerinfo.c:178 | ||
5502 | #, fuzzy, c-format | ||
5503 | msgid "Removing expired address of transport `%s'\n" | ||
5504 | msgstr "Verfügbare(r) Transport(e): %s\n" | ||
5505 | |||
5506 | #: src/peerinfo/gnunet-service-peerinfo.c:310 | ||
5507 | #, fuzzy, c-format | ||
5508 | msgid "Failed to parse HELLO in file `%s': %s\n" | ||
5509 | msgstr "Datei wurde als `%s' gespeichert.\n" | ||
5510 | |||
5511 | #: src/peerinfo/gnunet-service-peerinfo.c:331 | ||
5512 | #: src/peerinfo/gnunet-service-peerinfo.c:362 | ||
5513 | #, fuzzy, c-format | ||
5514 | msgid "Failed to parse HELLO in file `%s'\n" | ||
5515 | msgstr "Datei wurde als `%s' gespeichert.\n" | ||
5516 | |||
5517 | #: src/peerinfo/gnunet-service-peerinfo.c:446 | ||
5518 | msgid "# peers known" | ||
5519 | msgstr "" | ||
5520 | |||
5521 | #: src/peerinfo/gnunet-service-peerinfo.c:489 | ||
5522 | #, c-format | ||
5523 | msgid "" | ||
5524 | "File `%s' in directory `%s' does not match naming convention. Removed.\n" | ||
5525 | msgstr "" | ||
5526 | "Die Datei »%s« im Verzeichnis »%s« entspricht nicht der Namenskonvention. " | ||
5527 | "Die Datei wurde entfernt.\n" | ||
5528 | |||
5529 | #: src/peerinfo/gnunet-service-peerinfo.c:655 | ||
5530 | #, fuzzy, c-format | ||
5531 | msgid "Scanning directory `%s'\n" | ||
5532 | msgstr "==> Verzeichnis `%s':\n" | ||
5533 | |||
5534 | #: src/peerinfo/gnunet-service-peerinfo.c:663 | ||
5535 | #, fuzzy, c-format | ||
5536 | msgid "Still no peers found in `%s'!\n" | ||
5537 | msgstr "Dienst `%s' konnte nicht ordentlich entladen werden!\n" | ||
5538 | |||
5539 | #: src/peerinfo/gnunet-service-peerinfo.c:1080 | ||
5540 | #, fuzzy, c-format | ||
5541 | msgid "Cleaning up directory `%s'\n" | ||
5542 | msgstr "==> Verzeichnis `%s':\n" | ||
5543 | |||
5544 | #: src/peerinfo/gnunet-service-peerinfo.c:1409 | ||
5545 | #, c-format | ||
5546 | msgid "Importing HELLOs from `%s'\n" | ||
5547 | msgstr "" | ||
5548 | |||
5549 | #: src/peerinfo/gnunet-service-peerinfo.c:1422 | ||
5550 | msgid "Skipping import of included HELLOs\n" | ||
5551 | msgstr "" | ||
5552 | |||
5553 | #: src/peerinfo/peerinfo_api.c:220 | ||
5554 | #, fuzzy | ||
5555 | msgid "Failed to receive response from `PEERINFO' service." | ||
5556 | msgstr "Fehler beim Empfangen der Antwort von gnunetd auf die `%s' Nachricht\n" | ||
5557 | |||
5631 | #: src/peerinfo-tool/gnunet-peerinfo.c:239 | 5558 | #: src/peerinfo-tool/gnunet-peerinfo.c:239 |
5632 | #, fuzzy, c-format | 5559 | #, fuzzy, c-format |
5633 | msgid "%sPeer `%s'\n" | 5560 | msgid "%sPeer `%s'\n" |
@@ -5718,63 +5645,6 @@ msgstr "Teste Transport(e) %s\n" | |||
5718 | msgid "Failed to load transport plugin for `%s'\n" | 5645 | msgid "Failed to load transport plugin for `%s'\n" |
5719 | msgstr "Anwendung `%s' konnte nicht initialisiert werden.\n" | 5646 | msgstr "Anwendung `%s' konnte nicht initialisiert werden.\n" |
5720 | 5647 | ||
5721 | #: src/peerinfo/gnunet-service-peerinfo.c:178 | ||
5722 | #, fuzzy, c-format | ||
5723 | msgid "Removing expired address of transport `%s'\n" | ||
5724 | msgstr "Verfügbare(r) Transport(e): %s\n" | ||
5725 | |||
5726 | #: src/peerinfo/gnunet-service-peerinfo.c:310 | ||
5727 | #, fuzzy, c-format | ||
5728 | msgid "Failed to parse HELLO in file `%s': %s\n" | ||
5729 | msgstr "Datei wurde als `%s' gespeichert.\n" | ||
5730 | |||
5731 | #: src/peerinfo/gnunet-service-peerinfo.c:331 | ||
5732 | #: src/peerinfo/gnunet-service-peerinfo.c:362 | ||
5733 | #, fuzzy, c-format | ||
5734 | msgid "Failed to parse HELLO in file `%s'\n" | ||
5735 | msgstr "Datei wurde als `%s' gespeichert.\n" | ||
5736 | |||
5737 | #: src/peerinfo/gnunet-service-peerinfo.c:446 | ||
5738 | msgid "# peers known" | ||
5739 | msgstr "" | ||
5740 | |||
5741 | #: src/peerinfo/gnunet-service-peerinfo.c:489 | ||
5742 | #, c-format | ||
5743 | msgid "" | ||
5744 | "File `%s' in directory `%s' does not match naming convention. Removed.\n" | ||
5745 | msgstr "" | ||
5746 | "Die Datei »%s« im Verzeichnis »%s« entspricht nicht der Namenskonvention. " | ||
5747 | "Die Datei wurde entfernt.\n" | ||
5748 | |||
5749 | #: src/peerinfo/gnunet-service-peerinfo.c:655 | ||
5750 | #, fuzzy, c-format | ||
5751 | msgid "Scanning directory `%s'\n" | ||
5752 | msgstr "==> Verzeichnis `%s':\n" | ||
5753 | |||
5754 | #: src/peerinfo/gnunet-service-peerinfo.c:663 | ||
5755 | #, fuzzy, c-format | ||
5756 | msgid "Still no peers found in `%s'!\n" | ||
5757 | msgstr "Dienst `%s' konnte nicht ordentlich entladen werden!\n" | ||
5758 | |||
5759 | #: src/peerinfo/gnunet-service-peerinfo.c:1076 | ||
5760 | #, fuzzy, c-format | ||
5761 | msgid "Cleaning up directory `%s'\n" | ||
5762 | msgstr "==> Verzeichnis `%s':\n" | ||
5763 | |||
5764 | #: src/peerinfo/gnunet-service-peerinfo.c:1405 | ||
5765 | #, c-format | ||
5766 | msgid "Importing HELLOs from `%s'\n" | ||
5767 | msgstr "" | ||
5768 | |||
5769 | #: src/peerinfo/gnunet-service-peerinfo.c:1418 | ||
5770 | msgid "Skipping import of included HELLOs\n" | ||
5771 | msgstr "" | ||
5772 | |||
5773 | #: src/peerinfo/peerinfo_api.c:220 | ||
5774 | #, fuzzy | ||
5775 | msgid "Failed to receive response from `PEERINFO' service." | ||
5776 | msgstr "Fehler beim Empfangen der Antwort von gnunetd auf die `%s' Nachricht\n" | ||
5777 | |||
5778 | #: src/peerstore/gnunet-peerstore.c:91 | 5648 | #: src/peerstore/gnunet-peerstore.c:91 |
5779 | msgid "peerstore" | 5649 | msgid "peerstore" |
5780 | msgstr "" | 5650 | msgstr "" |
@@ -6215,12 +6085,12 @@ msgstr " Verbindung fehlgeschlagen\n" | |||
6215 | msgid "# revocation set unions completed" | 6085 | msgid "# revocation set unions completed" |
6216 | msgstr "# Klartext PONG Nachrichten empfangen" | 6086 | msgstr "# Klartext PONG Nachrichten empfangen" |
6217 | 6087 | ||
6218 | #: src/revocation/gnunet-service-revocation.c:524 | 6088 | #: src/revocation/gnunet-service-revocation.c:525 |
6219 | #: src/revocation/gnunet-service-revocation.c:771 | 6089 | #: src/revocation/gnunet-service-revocation.c:773 |
6220 | msgid "SET service crashed, terminating revocation service\n" | 6090 | msgid "SET service crashed, terminating revocation service\n" |
6221 | msgstr "" | 6091 | msgstr "" |
6222 | 6092 | ||
6223 | #: src/revocation/gnunet-service-revocation.c:862 | 6093 | #: src/revocation/gnunet-service-revocation.c:864 |
6224 | #, fuzzy | 6094 | #, fuzzy |
6225 | msgid "Could not open revocation database file!" | 6095 | msgid "Could not open revocation database file!" |
6226 | msgstr "Knoten `%s' konnte nicht in der Routing Tabelle gefunden werden!\n" | 6096 | msgstr "Knoten `%s' konnte nicht in der Routing Tabelle gefunden werden!\n" |
@@ -6284,10 +6154,10 @@ msgstr "" | |||
6284 | msgid "Calculate the Vectorproduct with a GNUnet peer." | 6154 | msgid "Calculate the Vectorproduct with a GNUnet peer." |
6285 | msgstr "" | 6155 | msgstr "" |
6286 | 6156 | ||
6287 | #: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1172 | ||
6288 | #: src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c:1063 | ||
6289 | #: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1401 | 6157 | #: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1401 |
6290 | #: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1345 | 6158 | #: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1345 |
6159 | #: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1172 | ||
6160 | #: src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c:1063 | ||
6291 | #, fuzzy | 6161 | #, fuzzy |
6292 | msgid "Connect to CADET failed\n" | 6162 | msgid "Connect to CADET failed\n" |
6293 | msgstr " Verbindung fehlgeschlagen\n" | 6163 | msgstr " Verbindung fehlgeschlagen\n" |
@@ -6504,7 +6374,7 @@ msgstr "" | |||
6504 | msgid "Wrote %llu bytes of statistics to `%s'\n" | 6374 | msgid "Wrote %llu bytes of statistics to `%s'\n" |
6505 | msgstr "Dateien aus dem GNUnet herunterladen." | 6375 | msgstr "Dateien aus dem GNUnet herunterladen." |
6506 | 6376 | ||
6507 | #: src/statistics/gnunet-service-statistics.c:1084 | 6377 | #: src/statistics/gnunet-service-statistics.c:1086 |
6508 | #, fuzzy, c-format | 6378 | #, fuzzy, c-format |
6509 | msgid "Loading %llu bytes of statistics from `%s'\n" | 6379 | msgid "Loading %llu bytes of statistics from `%s'\n" |
6510 | msgstr "Dateien aus dem GNUnet herunterladen." | 6380 | msgstr "Dateien aus dem GNUnet herunterladen." |
@@ -6632,7 +6502,7 @@ msgid "Invalid argument `%s'; expecting unsigned int\n" | |||
6632 | msgstr "Ungültiger Parameter für `%s' bei %s:%d.\n" | 6502 | msgstr "Ungültiger Parameter für `%s' bei %s:%d.\n" |
6633 | 6503 | ||
6634 | #: src/testbed/generate-underlay-topology.c:342 | 6504 | #: src/testbed/generate-underlay-topology.c:342 |
6635 | #: src/testbed/gnunet-testbed-profiler.c:284 | 6505 | #: src/testbed/gnunet-testbed-profiler.c:283 |
6636 | msgid "create COUNT number of peers" | 6506 | msgid "create COUNT number of peers" |
6637 | msgstr "" | 6507 | msgstr "" |
6638 | 6508 | ||
@@ -6670,13 +6540,13 @@ msgid "" | |||
6670 | "deployments" | 6540 | "deployments" |
6671 | msgstr "" | 6541 | msgstr "" |
6672 | 6542 | ||
6673 | #: src/testbed/gnunet-daemon-testbed-underlay.c:231 src/testing/list-keys.c:46 | 6543 | #: src/testbed/gnunet-daemon-testbed-underlay.c:233 src/testing/list-keys.c:46 |
6674 | #: src/testing/testing.c:288 src/util/gnunet-ecc.c:301 | 6544 | #: src/testing/testing.c:288 src/util/gnunet-ecc.c:306 |
6675 | #, c-format | 6545 | #, c-format |
6676 | msgid "Incorrect hostkey file format: %s\n" | 6546 | msgid "Incorrect hostkey file format: %s\n" |
6677 | msgstr "" | 6547 | msgstr "" |
6678 | 6548 | ||
6679 | #: src/testbed/gnunet-daemon-testbed-underlay.c:469 | 6549 | #: src/testbed/gnunet-daemon-testbed-underlay.c:471 |
6680 | msgid "Daemon to restrict underlay network in testbed deployments" | 6550 | msgid "Daemon to restrict underlay network in testbed deployments" |
6681 | msgstr "" | 6551 | msgstr "" |
6682 | 6552 | ||
@@ -6741,17 +6611,6 @@ msgstr "" | |||
6741 | msgid "%.s Unknown result code." | 6611 | msgid "%.s Unknown result code." |
6742 | msgstr "" | 6612 | msgstr "" |
6743 | 6613 | ||
6744 | #: src/testbed/gnunet-testbed-profiler.c:290 | ||
6745 | msgid "tolerate COUNT number of continious timeout failures" | ||
6746 | msgstr "" | ||
6747 | |||
6748 | #: src/testbed/gnunet-testbed-profiler.c:295 | ||
6749 | msgid "" | ||
6750 | "run profiler in non-interactive mode where upon testbed setup the profiler " | ||
6751 | "does not wait for a keystroke but continues to run until a termination " | ||
6752 | "signal is received" | ||
6753 | msgstr "" | ||
6754 | |||
6755 | #: src/testbed/gnunet_testbed_mpi_spawn.c:118 | 6614 | #: src/testbed/gnunet_testbed_mpi_spawn.c:118 |
6756 | #, fuzzy | 6615 | #, fuzzy |
6757 | msgid "Waiting for child to exit.\n" | 6616 | msgid "Waiting for child to exit.\n" |
@@ -6764,6 +6623,17 @@ msgstr "" | |||
6764 | msgid "Spawning process `%s'\n" | 6623 | msgid "Spawning process `%s'\n" |
6765 | msgstr "Ungültige Antwort auf `%s'.\n" | 6624 | msgstr "Ungültige Antwort auf `%s'.\n" |
6766 | 6625 | ||
6626 | #: src/testbed/gnunet-testbed-profiler.c:289 | ||
6627 | msgid "tolerate COUNT number of continious timeout failures" | ||
6628 | msgstr "" | ||
6629 | |||
6630 | #: src/testbed/gnunet-testbed-profiler.c:294 | ||
6631 | msgid "" | ||
6632 | "run profiler in non-interactive mode where upon testbed setup the profiler " | ||
6633 | "does not wait for a keystroke but continues to run until a termination " | ||
6634 | "signal is received" | ||
6635 | msgstr "" | ||
6636 | |||
6767 | #: src/testbed/testbed_api.c:410 | 6637 | #: src/testbed/testbed_api.c:410 |
6768 | #, fuzzy, c-format | 6638 | #, fuzzy, c-format |
6769 | msgid "Adding host %u failed with error: %s\n" | 6639 | msgid "Adding host %u failed with error: %s\n" |
@@ -7056,54 +6926,54 @@ msgstr "# HELLO-Meldungen empfangen" | |||
7056 | msgid "GNUnet topology control" | 6926 | msgid "GNUnet topology control" |
7057 | msgstr "" | 6927 | msgstr "" |
7058 | 6928 | ||
6929 | #: src/transport/gnunet-service-transport_ats.c:141 | ||
6930 | msgid "# Addresses given to ATS" | ||
6931 | msgstr "" | ||
6932 | |||
7059 | #: src/transport/gnunet-service-transport.c:448 | 6933 | #: src/transport/gnunet-service-transport.c:448 |
7060 | msgid "# messages dropped due to slow client" | 6934 | msgid "# messages dropped due to slow client" |
7061 | msgstr "" | 6935 | msgstr "" |
7062 | 6936 | ||
7063 | #: src/transport/gnunet-service-transport.c:809 | 6937 | #: src/transport/gnunet-service-transport.c:818 |
7064 | msgid "# bytes payload dropped (other peer was not connected)" | 6938 | msgid "# bytes payload dropped (other peer was not connected)" |
7065 | msgstr "" | 6939 | msgstr "" |
7066 | 6940 | ||
7067 | #: src/transport/gnunet-service-transport.c:1539 | 6941 | #: src/transport/gnunet-service-transport.c:1551 |
7068 | msgid "# bytes payload discarded due to not connected peer" | 6942 | msgid "# bytes payload discarded due to not connected peer" |
7069 | msgstr "" | 6943 | msgstr "" |
7070 | 6944 | ||
7071 | #: src/transport/gnunet-service-transport.c:1699 | 6945 | #: src/transport/gnunet-service-transport.c:1711 |
7072 | msgid "# bytes total received" | 6946 | msgid "# bytes total received" |
7073 | msgstr "# Bytes insgesamt empfangen" | 6947 | msgstr "# Bytes insgesamt empfangen" |
7074 | 6948 | ||
7075 | #: src/transport/gnunet-service-transport.c:1796 | 6949 | #: src/transport/gnunet-service-transport.c:1808 |
7076 | msgid "# bytes payload received" | 6950 | msgid "# bytes payload received" |
7077 | msgstr "# Bytes Nutzdaten empfangen" | 6951 | msgstr "# Bytes Nutzdaten empfangen" |
7078 | 6952 | ||
7079 | #: src/transport/gnunet-service-transport.c:2113 | 6953 | #: src/transport/gnunet-service-transport.c:2125 |
7080 | #: src/transport/gnunet-service-transport.c:2585 | 6954 | #: src/transport/gnunet-service-transport.c:2597 |
7081 | msgid "# disconnects due to blacklist" | 6955 | msgid "# disconnects due to blacklist" |
7082 | msgstr "" | 6956 | msgstr "" |
7083 | 6957 | ||
7084 | #: src/transport/gnunet-service-transport.c:2589 | 6958 | #: src/transport/gnunet-service-transport.c:2601 |
7085 | #, fuzzy, c-format | 6959 | #, fuzzy, c-format |
7086 | msgid "Disallowing connection to peer `%s' on transport %s\n" | 6960 | msgid "Disallowing connection to peer `%s' on transport %s\n" |
7087 | msgstr "Anwendung `%s' konnte nicht initialisiert werden.\n" | 6961 | msgstr "Anwendung `%s' konnte nicht initialisiert werden.\n" |
7088 | 6962 | ||
7089 | #: src/transport/gnunet-service-transport.c:2697 | 6963 | #: src/transport/gnunet-service-transport.c:2709 |
7090 | #, c-format | 6964 | #, c-format |
7091 | msgid "Adding blacklisting entry for peer `%s'\n" | 6965 | msgid "Adding blacklisting entry for peer `%s'\n" |
7092 | msgstr "" | 6966 | msgstr "" |
7093 | 6967 | ||
7094 | #: src/transport/gnunet-service-transport.c:2706 | 6968 | #: src/transport/gnunet-service-transport.c:2718 |
7095 | #, c-format | 6969 | #, c-format |
7096 | msgid "Adding blacklisting entry for peer `%s':`%s'\n" | 6970 | msgid "Adding blacklisting entry for peer `%s':`%s'\n" |
7097 | msgstr "" | 6971 | msgstr "" |
7098 | 6972 | ||
7099 | #: src/transport/gnunet-service-transport.c:2771 | 6973 | #: src/transport/gnunet-service-transport.c:2783 |
7100 | msgid "Transport service is lacking key configuration settings. Exiting.\n" | 6974 | msgid "Transport service is lacking key configuration settings. Exiting.\n" |
7101 | msgstr "" | 6975 | msgstr "" |
7102 | 6976 | ||
7103 | #: src/transport/gnunet-service-transport_ats.c:141 | ||
7104 | msgid "# Addresses given to ATS" | ||
7105 | msgstr "" | ||
7106 | |||
7107 | #: src/transport/gnunet-service-transport_hello.c:195 | 6977 | #: src/transport/gnunet-service-transport_hello.c:195 |
7108 | msgid "# refreshed my HELLO" | 6978 | msgid "# refreshed my HELLO" |
7109 | msgstr "" | 6979 | msgstr "" |
@@ -7241,74 +7111,74 @@ msgstr "# PING Nachrichten erstellt" | |||
7241 | msgid "SYN request from peer `%s' ignored due impending shutdown\n" | 7111 | msgid "SYN request from peer `%s' ignored due impending shutdown\n" |
7242 | msgstr "" | 7112 | msgstr "" |
7243 | 7113 | ||
7244 | #: src/transport/gnunet-service-transport_neighbours.c:2620 | 7114 | #: src/transport/gnunet-service-transport_neighbours.c:2623 |
7245 | msgid "# Attempts to switch addresses" | 7115 | msgid "# Attempts to switch addresses" |
7246 | msgstr "" | 7116 | msgstr "" |
7247 | 7117 | ||
7248 | #: src/transport/gnunet-service-transport_neighbours.c:3102 | 7118 | #: src/transport/gnunet-service-transport_neighbours.c:3105 |
7249 | #, fuzzy | 7119 | #, fuzzy |
7250 | msgid "# SYN_ACK messages received" | 7120 | msgid "# SYN_ACK messages received" |
7251 | msgstr "# SESSION_ACK-Meldungen empfangen" | 7121 | msgstr "# SESSION_ACK-Meldungen empfangen" |
7252 | 7122 | ||
7253 | #: src/transport/gnunet-service-transport_neighbours.c:3110 | 7123 | #: src/transport/gnunet-service-transport_neighbours.c:3113 |
7254 | #, fuzzy | 7124 | #, fuzzy |
7255 | msgid "# unexpected SYN_ACK messages (no peer)" | 7125 | msgid "# unexpected SYN_ACK messages (no peer)" |
7256 | msgstr "# verschlüsselter PONG Nachrichten gesendet" | 7126 | msgstr "# verschlüsselter PONG Nachrichten gesendet" |
7257 | 7127 | ||
7258 | #: src/transport/gnunet-service-transport_neighbours.c:3128 | 7128 | #: src/transport/gnunet-service-transport_neighbours.c:3131 |
7259 | #: src/transport/gnunet-service-transport_neighbours.c:3152 | 7129 | #: src/transport/gnunet-service-transport_neighbours.c:3155 |
7260 | #, fuzzy | 7130 | #, fuzzy |
7261 | msgid "# unexpected SYN_ACK messages (not ready)" | 7131 | msgid "# unexpected SYN_ACK messages (not ready)" |
7262 | msgstr "# verschlüsselter PONG Nachrichten gesendet" | 7132 | msgstr "# verschlüsselter PONG Nachrichten gesendet" |
7263 | 7133 | ||
7264 | #: src/transport/gnunet-service-transport_neighbours.c:3164 | 7134 | #: src/transport/gnunet-service-transport_neighbours.c:3167 |
7265 | #, fuzzy | 7135 | #, fuzzy |
7266 | msgid "# unexpected SYN_ACK messages (waiting on ATS)" | 7136 | msgid "# unexpected SYN_ACK messages (waiting on ATS)" |
7267 | msgstr "# verschlüsselter PONG Nachrichten gesendet" | 7137 | msgstr "# verschlüsselter PONG Nachrichten gesendet" |
7268 | 7138 | ||
7269 | #: src/transport/gnunet-service-transport_neighbours.c:3189 | 7139 | #: src/transport/gnunet-service-transport_neighbours.c:3192 |
7270 | msgid "# Successful attempts to switch addresses" | 7140 | msgid "# Successful attempts to switch addresses" |
7271 | msgstr "" | 7141 | msgstr "" |
7272 | 7142 | ||
7273 | #: src/transport/gnunet-service-transport_neighbours.c:3202 | 7143 | #: src/transport/gnunet-service-transport_neighbours.c:3205 |
7274 | #, fuzzy | 7144 | #, fuzzy |
7275 | msgid "# unexpected SYN_ACK messages (disconnecting)" | 7145 | msgid "# unexpected SYN_ACK messages (disconnecting)" |
7276 | msgstr "# verschlüsselter PONG Nachrichten gesendet" | 7146 | msgstr "# verschlüsselter PONG Nachrichten gesendet" |
7277 | 7147 | ||
7278 | #: src/transport/gnunet-service-transport_neighbours.c:3374 | 7148 | #: src/transport/gnunet-service-transport_neighbours.c:3377 |
7279 | #, fuzzy | 7149 | #, fuzzy |
7280 | msgid "# ACK messages received" | 7150 | msgid "# ACK messages received" |
7281 | msgstr "# CONNECT_ACK-Meldungen empfangen" | 7151 | msgstr "# CONNECT_ACK-Meldungen empfangen" |
7282 | 7152 | ||
7283 | #: src/transport/gnunet-service-transport_neighbours.c:3410 | 7153 | #: src/transport/gnunet-service-transport_neighbours.c:3413 |
7284 | #, fuzzy | 7154 | #, fuzzy |
7285 | msgid "# unexpected ACK messages" | 7155 | msgid "# unexpected ACK messages" |
7286 | msgstr "# verschlüsselter PONG Nachrichten gesendet" | 7156 | msgstr "# verschlüsselter PONG Nachrichten gesendet" |
7287 | 7157 | ||
7288 | #: src/transport/gnunet-service-transport_neighbours.c:3498 | 7158 | #: src/transport/gnunet-service-transport_neighbours.c:3501 |
7289 | #, fuzzy | 7159 | #, fuzzy |
7290 | msgid "# quota messages ignored (malformed)" | 7160 | msgid "# quota messages ignored (malformed)" |
7291 | msgstr "# gap Anfragen verworfen: Kollision in RT" | 7161 | msgstr "# gap Anfragen verworfen: Kollision in RT" |
7292 | 7162 | ||
7293 | #: src/transport/gnunet-service-transport_neighbours.c:3505 | 7163 | #: src/transport/gnunet-service-transport_neighbours.c:3508 |
7294 | #, fuzzy | 7164 | #, fuzzy |
7295 | msgid "# QUOTA messages received" | 7165 | msgid "# QUOTA messages received" |
7296 | msgstr "# verschlüsselter PONG Nachrichten empfangen" | 7166 | msgstr "# verschlüsselter PONG Nachrichten empfangen" |
7297 | 7167 | ||
7298 | #: src/transport/gnunet-service-transport_neighbours.c:3545 | 7168 | #: src/transport/gnunet-service-transport_neighbours.c:3548 |
7299 | msgid "# disconnect messages ignored (malformed)" | 7169 | msgid "# disconnect messages ignored (malformed)" |
7300 | msgstr "" | 7170 | msgstr "" |
7301 | 7171 | ||
7302 | #: src/transport/gnunet-service-transport_neighbours.c:3552 | 7172 | #: src/transport/gnunet-service-transport_neighbours.c:3555 |
7303 | #, fuzzy | 7173 | #, fuzzy |
7304 | msgid "# DISCONNECT messages received" | 7174 | msgid "# DISCONNECT messages received" |
7305 | msgstr "# verschlüsselter PONG Nachrichten empfangen" | 7175 | msgstr "# verschlüsselter PONG Nachrichten empfangen" |
7306 | 7176 | ||
7307 | #: src/transport/gnunet-service-transport_neighbours.c:3563 | 7177 | #: src/transport/gnunet-service-transport_neighbours.c:3566 |
7308 | msgid "# disconnect messages ignored (timestamp)" | 7178 | msgid "# disconnect messages ignored (timestamp)" |
7309 | msgstr "" | 7179 | msgstr "" |
7310 | 7180 | ||
7311 | #: src/transport/gnunet-service-transport_neighbours.c:3697 | 7181 | #: src/transport/gnunet-service-transport_neighbours.c:3700 |
7312 | msgid "# disconnected from peer upon explicit request" | 7182 | msgid "# disconnected from peer upon explicit request" |
7313 | msgstr "" | 7183 | msgstr "" |
7314 | 7184 | ||
@@ -7342,8 +7212,8 @@ msgstr "" | |||
7342 | 7212 | ||
7343 | #: src/transport/gnunet-service-transport_validation.c:491 | 7213 | #: src/transport/gnunet-service-transport_validation.c:491 |
7344 | #: src/transport/gnunet-service-transport_validation.c:677 | 7214 | #: src/transport/gnunet-service-transport_validation.c:677 |
7345 | #: src/transport/gnunet-service-transport_validation.c:988 | 7215 | #: src/transport/gnunet-service-transport_validation.c:997 |
7346 | #: src/transport/gnunet-service-transport_validation.c:1590 | 7216 | #: src/transport/gnunet-service-transport_validation.c:1609 |
7347 | #, fuzzy | 7217 | #, fuzzy |
7348 | msgid "# validations running" | 7218 | msgid "# validations running" |
7349 | msgstr "Sqlite-Datenbank läuft\n" | 7219 | msgstr "Sqlite-Datenbank läuft\n" |
@@ -7370,98 +7240,61 @@ msgstr "" | |||
7370 | msgid "# address revalidations started" | 7240 | msgid "# address revalidations started" |
7371 | msgstr "" | 7241 | msgstr "" |
7372 | 7242 | ||
7373 | #: src/transport/gnunet-service-transport_validation.c:1114 | 7243 | #: src/transport/gnunet-service-transport_validation.c:1123 |
7374 | #, fuzzy | 7244 | #, fuzzy |
7375 | msgid "# PING message for different peer received" | 7245 | msgid "# PING message for different peer received" |
7376 | msgstr "# PING Nachrichten erstellt" | 7246 | msgstr "# PING Nachrichten erstellt" |
7377 | 7247 | ||
7378 | #: src/transport/gnunet-service-transport_validation.c:1165 | 7248 | #: src/transport/gnunet-service-transport_validation.c:1174 |
7379 | #, c-format | 7249 | #, c-format |
7380 | msgid "Plugin `%s' not available, cannot confirm having this address\n" | 7250 | msgid "Plugin `%s' not available, cannot confirm having this address\n" |
7381 | msgstr "" | 7251 | msgstr "" |
7382 | 7252 | ||
7383 | #: src/transport/gnunet-service-transport_validation.c:1178 | 7253 | #: src/transport/gnunet-service-transport_validation.c:1187 |
7384 | msgid "# failed address checks during validation" | 7254 | msgid "# failed address checks during validation" |
7385 | msgstr "" | 7255 | msgstr "" |
7386 | 7256 | ||
7387 | #: src/transport/gnunet-service-transport_validation.c:1181 | 7257 | #: src/transport/gnunet-service-transport_validation.c:1190 |
7388 | #, c-format | 7258 | #, c-format |
7389 | msgid "Address `%s' is not one of my addresses, not confirming PING\n" | 7259 | msgid "Address `%s' is not one of my addresses, not confirming PING\n" |
7390 | msgstr "" | 7260 | msgstr "" |
7391 | 7261 | ||
7392 | #: src/transport/gnunet-service-transport_validation.c:1189 | 7262 | #: src/transport/gnunet-service-transport_validation.c:1198 |
7393 | msgid "# successful address checks during validation" | 7263 | msgid "# successful address checks during validation" |
7394 | msgstr "" | 7264 | msgstr "" |
7395 | 7265 | ||
7396 | #: src/transport/gnunet-service-transport_validation.c:1202 | 7266 | #: src/transport/gnunet-service-transport_validation.c:1211 |
7397 | #, c-format | 7267 | #, c-format |
7398 | msgid "" | 7268 | msgid "" |
7399 | "Not confirming PING from peer `%s' with address `%s' since I cannot confirm " | 7269 | "Not confirming PING from peer `%s' with address `%s' since I cannot confirm " |
7400 | "having this address.\n" | 7270 | "having this address.\n" |
7401 | msgstr "" | 7271 | msgstr "" |
7402 | 7272 | ||
7403 | #: src/transport/gnunet-service-transport_validation.c:1257 | 7273 | #: src/transport/gnunet-service-transport_validation.c:1266 |
7404 | #, c-format | 7274 | #, c-format |
7405 | msgid "Failed to create PONG signature for peer `%s'\n" | 7275 | msgid "Failed to create PONG signature for peer `%s'\n" |
7406 | msgstr "PONG-Signatur für Knoten »%s« konnte nicht erstellt werden\n" | 7276 | msgstr "PONG-Signatur für Knoten »%s« konnte nicht erstellt werden\n" |
7407 | 7277 | ||
7408 | #: src/transport/gnunet-service-transport_validation.c:1308 | 7278 | #: src/transport/gnunet-service-transport_validation.c:1317 |
7409 | msgid "# PONGs unicast via reliable transport" | 7279 | msgid "# PONGs unicast via reliable transport" |
7410 | msgstr "" | 7280 | msgstr "" |
7411 | 7281 | ||
7412 | #: src/transport/gnunet-service-transport_validation.c:1317 | 7282 | #: src/transport/gnunet-service-transport_validation.c:1326 |
7413 | msgid "# PONGs multicast to all available addresses" | 7283 | msgid "# PONGs multicast to all available addresses" |
7414 | msgstr "" | 7284 | msgstr "" |
7415 | 7285 | ||
7416 | #: src/transport/gnunet-service-transport_validation.c:1480 | 7286 | #: src/transport/gnunet-service-transport_validation.c:1499 |
7417 | msgid "# PONGs dropped, no matching pending validation" | 7287 | msgid "# PONGs dropped, no matching pending validation" |
7418 | msgstr "" | 7288 | msgstr "" |
7419 | 7289 | ||
7420 | #: src/transport/gnunet-service-transport_validation.c:1498 | 7290 | #: src/transport/gnunet-service-transport_validation.c:1517 |
7421 | msgid "# PONGs dropped, signature expired" | 7291 | msgid "# PONGs dropped, signature expired" |
7422 | msgstr "" | 7292 | msgstr "" |
7423 | 7293 | ||
7424 | #: src/transport/gnunet-service-transport_validation.c:1553 | 7294 | #: src/transport/gnunet-service-transport_validation.c:1572 |
7425 | msgid "# validations succeeded" | 7295 | msgid "# validations succeeded" |
7426 | msgstr "" | 7296 | msgstr "" |
7427 | 7297 | ||
7428 | #: src/transport/gnunet-transport-profiler.c:219 | ||
7429 | #, c-format | ||
7430 | msgid "%llu B in %llu ms == %.2f KB/s!\n" | ||
7431 | msgstr "" | ||
7432 | |||
7433 | #: src/transport/gnunet-transport-profiler.c:617 | ||
7434 | msgid "send data to peer" | ||
7435 | msgstr "" | ||
7436 | |||
7437 | #: src/transport/gnunet-transport-profiler.c:621 | ||
7438 | #, fuzzy | ||
7439 | msgid "receive data from peer" | ||
7440 | msgstr "# Bytes des Typs %d empfangen" | ||
7441 | |||
7442 | #: src/transport/gnunet-transport-profiler.c:626 | ||
7443 | msgid "iterations" | ||
7444 | msgstr "" | ||
7445 | |||
7446 | #: src/transport/gnunet-transport-profiler.c:631 | ||
7447 | #, fuzzy | ||
7448 | msgid "number of messages to send" | ||
7449 | msgstr "Anzahl an Durchläufen" | ||
7450 | |||
7451 | #: src/transport/gnunet-transport-profiler.c:636 | ||
7452 | msgid "message size to use" | ||
7453 | msgstr "" | ||
7454 | |||
7455 | #: src/transport/gnunet-transport-profiler.c:641 | ||
7456 | #: src/transport/gnunet-transport.c:1462 | ||
7457 | msgid "peer identity" | ||
7458 | msgstr "" | ||
7459 | |||
7460 | #: src/transport/gnunet-transport-profiler.c:652 | ||
7461 | #: src/transport/gnunet-transport.c:1482 | ||
7462 | msgid "Direct access to transport service." | ||
7463 | msgstr "Direkter Zugriff auf den Transportdienst" | ||
7464 | |||
7465 | #: src/transport/gnunet-transport.c:413 | 7298 | #: src/transport/gnunet-transport.c:413 |
7466 | #, c-format | 7299 | #, c-format |
7467 | msgid "Transmitted %llu bytes/s (%llu bytes in %s)\n" | 7300 | msgid "Transmitted %llu bytes/s (%llu bytes in %s)\n" |
@@ -7594,6 +7427,11 @@ msgstr "" | |||
7594 | msgid "do not resolve hostnames" | 7427 | msgid "do not resolve hostnames" |
7595 | msgstr "Keine Rechnernamen auflösen" | 7428 | msgstr "Keine Rechnernamen auflösen" |
7596 | 7429 | ||
7430 | #: src/transport/gnunet-transport.c:1462 | ||
7431 | #: src/transport/gnunet-transport-profiler.c:641 | ||
7432 | msgid "peer identity" | ||
7433 | msgstr "" | ||
7434 | |||
7597 | #: src/transport/gnunet-transport.c:1466 | 7435 | #: src/transport/gnunet-transport.c:1466 |
7598 | msgid "monitor plugin sessions" | 7436 | msgid "monitor plugin sessions" |
7599 | msgstr "" | 7437 | msgstr "" |
@@ -7602,6 +7440,38 @@ msgstr "" | |||
7602 | msgid "send data for benchmarking to the other peer (until CTRL-C)" | 7440 | msgid "send data for benchmarking to the other peer (until CTRL-C)" |
7603 | msgstr "" | 7441 | msgstr "" |
7604 | 7442 | ||
7443 | #: src/transport/gnunet-transport.c:1482 | ||
7444 | #: src/transport/gnunet-transport-profiler.c:652 | ||
7445 | msgid "Direct access to transport service." | ||
7446 | msgstr "Direkter Zugriff auf den Transportdienst" | ||
7447 | |||
7448 | #: src/transport/gnunet-transport-profiler.c:219 | ||
7449 | #, c-format | ||
7450 | msgid "%llu B in %llu ms == %.2f KB/s!\n" | ||
7451 | msgstr "" | ||
7452 | |||
7453 | #: src/transport/gnunet-transport-profiler.c:617 | ||
7454 | msgid "send data to peer" | ||
7455 | msgstr "" | ||
7456 | |||
7457 | #: src/transport/gnunet-transport-profiler.c:621 | ||
7458 | #, fuzzy | ||
7459 | msgid "receive data from peer" | ||
7460 | msgstr "# Bytes des Typs %d empfangen" | ||
7461 | |||
7462 | #: src/transport/gnunet-transport-profiler.c:626 | ||
7463 | msgid "iterations" | ||
7464 | msgstr "" | ||
7465 | |||
7466 | #: src/transport/gnunet-transport-profiler.c:631 | ||
7467 | #, fuzzy | ||
7468 | msgid "number of messages to send" | ||
7469 | msgstr "Anzahl an Durchläufen" | ||
7470 | |||
7471 | #: src/transport/gnunet-transport-profiler.c:636 | ||
7472 | msgid "message size to use" | ||
7473 | msgstr "" | ||
7474 | |||
7605 | #: src/transport/plugin_transport_http_client.c:1474 | 7475 | #: src/transport/plugin_transport_http_client.c:1474 |
7606 | #: src/transport/plugin_transport_http_server.c:2312 | 7476 | #: src/transport/plugin_transport_http_server.c:2312 |
7607 | #: src/transport/plugin_transport_http_server.c:3526 | 7477 | #: src/transport/plugin_transport_http_server.c:3526 |
@@ -7874,6 +7744,21 @@ msgstr "" | |||
7874 | msgid "TCP transport advertises itself as being on port %llu\n" | 7744 | msgid "TCP transport advertises itself as being on port %llu\n" |
7875 | msgstr "" | 7745 | msgstr "" |
7876 | 7746 | ||
7747 | #: src/transport/plugin_transport_udp_broadcasting.c:168 | ||
7748 | #, fuzzy | ||
7749 | msgid "# Multicast HELLO beacons received via UDP" | ||
7750 | msgstr "# Bytes empfangen über TCP" | ||
7751 | |||
7752 | #: src/transport/plugin_transport_udp_broadcasting.c:548 | ||
7753 | msgid "" | ||
7754 | "Disabling HELLO broadcasting due to friend-to-friend only configuration!\n" | ||
7755 | msgstr "" | ||
7756 | |||
7757 | #: src/transport/plugin_transport_udp_broadcasting.c:565 | ||
7758 | #, fuzzy, c-format | ||
7759 | msgid "Failed to set IPv4 broadcast option for broadcast socket on port %d\n" | ||
7760 | msgstr "Der Transportdienst auf Port %d konnte nicht gestartet werden.\n" | ||
7761 | |||
7877 | #: src/transport/plugin_transport_udp.c:3366 | 7762 | #: src/transport/plugin_transport_udp.c:3366 |
7878 | #, c-format | 7763 | #, c-format |
7879 | msgid "" | 7764 | msgid "" |
@@ -7921,21 +7806,6 @@ msgstr "»%s« ist keine gültige IP-Adresse.\n" | |||
7921 | msgid "Failed to create UDP network sockets\n" | 7806 | msgid "Failed to create UDP network sockets\n" |
7922 | msgstr "UDP-Sockets können nicht geöffnet werden\n" | 7807 | msgstr "UDP-Sockets können nicht geöffnet werden\n" |
7923 | 7808 | ||
7924 | #: src/transport/plugin_transport_udp_broadcasting.c:168 | ||
7925 | #, fuzzy | ||
7926 | msgid "# Multicast HELLO beacons received via UDP" | ||
7927 | msgstr "# Bytes empfangen über TCP" | ||
7928 | |||
7929 | #: src/transport/plugin_transport_udp_broadcasting.c:548 | ||
7930 | msgid "" | ||
7931 | "Disabling HELLO broadcasting due to friend-to-friend only configuration!\n" | ||
7932 | msgstr "" | ||
7933 | |||
7934 | #: src/transport/plugin_transport_udp_broadcasting.c:565 | ||
7935 | #, fuzzy, c-format | ||
7936 | msgid "Failed to set IPv4 broadcast option for broadcast socket on port %d\n" | ||
7937 | msgstr "Der Transportdienst auf Port %d konnte nicht gestartet werden.\n" | ||
7938 | |||
7939 | #: src/transport/plugin_transport_unix.c:1403 | 7809 | #: src/transport/plugin_transport_unix.c:1403 |
7940 | #, c-format | 7810 | #, c-format |
7941 | msgid "Cannot create path to `%s'\n" | 7811 | msgid "Cannot create path to `%s'\n" |
@@ -8049,7 +7919,7 @@ msgid "" | |||
8049 | "`GNUNET_SERVER_receive_done' after %s\n" | 7919 | "`GNUNET_SERVER_receive_done' after %s\n" |
8050 | msgstr "" | 7920 | msgstr "" |
8051 | 7921 | ||
8052 | #: src/transport/tcp_service_legacy.c:339 src/util/service.c:2336 | 7922 | #: src/transport/tcp_service_legacy.c:339 src/util/service.c:2346 |
8053 | #, c-format | 7923 | #, c-format |
8054 | msgid "Unknown address family %d\n" | 7924 | msgid "Unknown address family %d\n" |
8055 | msgstr "" | 7925 | msgstr "" |
@@ -8125,19 +7995,19 @@ msgstr "Benutzer/Gruppe kann nicht zu »%s« geändert werden: %s\n" | |||
8125 | msgid "do daemonize (detach from terminal)" | 7995 | msgid "do daemonize (detach from terminal)" |
8126 | msgstr "" | 7996 | msgstr "" |
8127 | 7997 | ||
8128 | #: src/transport/tcp_service_legacy.c:1448 src/util/program.c:244 | 7998 | #: src/transport/tcp_service_legacy.c:1448 src/util/program.c:255 |
8129 | #: src/util/service.c:1790 | 7999 | #: src/util/service.c:1790 |
8130 | #, fuzzy, c-format | 8000 | #, fuzzy, c-format |
8131 | msgid "Malformed configuration file `%s', exit ...\n" | 8001 | msgid "Malformed configuration file `%s', exit ...\n" |
8132 | msgstr "Konfigurationsdatei `%s' wurde erzeugt.\n" | 8002 | msgstr "Konfigurationsdatei `%s' wurde erzeugt.\n" |
8133 | 8003 | ||
8134 | #: src/transport/tcp_service_legacy.c:1458 src/util/program.c:261 | 8004 | #: src/transport/tcp_service_legacy.c:1458 src/util/program.c:272 |
8135 | #: src/util/service.c:1801 | 8005 | #: src/util/service.c:1801 |
8136 | #, fuzzy | 8006 | #, fuzzy |
8137 | msgid "Malformed configuration, exit ...\n" | 8007 | msgid "Malformed configuration, exit ...\n" |
8138 | msgstr "GNUnet Konfiguration" | 8008 | msgstr "GNUnet Konfiguration" |
8139 | 8009 | ||
8140 | #: src/transport/tcp_service_legacy.c:1463 src/util/program.c:256 | 8010 | #: src/transport/tcp_service_legacy.c:1463 src/util/program.c:267 |
8141 | #: src/util/service.c:1807 | 8011 | #: src/util/service.c:1807 |
8142 | #, fuzzy, c-format | 8012 | #, fuzzy, c-format |
8143 | msgid "Could not access configuration file `%s'\n" | 8013 | msgid "Could not access configuration file `%s'\n" |
@@ -8177,7 +8047,7 @@ msgstr "" | |||
8177 | msgid "Metadata `%s' failed to deserialize" | 8047 | msgid "Metadata `%s' failed to deserialize" |
8178 | msgstr "" | 8048 | msgstr "" |
8179 | 8049 | ||
8180 | #: src/util/client.c:882 | 8050 | #: src/util/client.c:911 |
8181 | #, c-format | 8051 | #, c-format |
8182 | msgid "Need a non-empty hostname for service `%s'.\n" | 8052 | msgid "Need a non-empty hostname for service `%s'.\n" |
8183 | msgstr "" | 8053 | msgstr "" |
@@ -8279,22 +8149,22 @@ msgid "" | |||
8279 | "%llu)\n" | 8149 | "%llu)\n" |
8280 | msgstr "" | 8150 | msgstr "" |
8281 | 8151 | ||
8282 | #: src/util/crypto_ecc.c:777 | 8152 | #: src/util/crypto_ecc.c:810 |
8283 | #, fuzzy, c-format | 8153 | #, fuzzy, c-format |
8284 | msgid "ECC signing failed at %s:%d: %s\n" | 8154 | msgid "ECC signing failed at %s:%d: %s\n" |
8285 | msgstr "`%s' schlug fehl bei %s:%d mit dem Fehler: `%s'.\n" | 8155 | msgstr "`%s' schlug fehl bei %s:%d mit dem Fehler: `%s'.\n" |
8286 | 8156 | ||
8287 | #: src/util/crypto_ecc.c:827 | 8157 | #: src/util/crypto_ecc.c:860 |
8288 | #, fuzzy, c-format | 8158 | #, fuzzy, c-format |
8289 | msgid "EdDSA signing failed at %s:%d: %s\n" | 8159 | msgid "EdDSA signing failed at %s:%d: %s\n" |
8290 | msgstr "`%s' schlug fehl bei %s:%d mit dem Fehler: `%s'.\n" | 8160 | msgstr "`%s' schlug fehl bei %s:%d mit dem Fehler: `%s'.\n" |
8291 | 8161 | ||
8292 | #: src/util/crypto_ecc.c:901 | 8162 | #: src/util/crypto_ecc.c:934 |
8293 | #, fuzzy, c-format | 8163 | #, fuzzy, c-format |
8294 | msgid "ECDSA signature verification failed at %s:%d: %s\n" | 8164 | msgid "ECDSA signature verification failed at %s:%d: %s\n" |
8295 | msgstr "RSA Signaturüberprüfung fehlgeschlagen bei %s:%d: %s\n" | 8165 | msgstr "RSA Signaturüberprüfung fehlgeschlagen bei %s:%d: %s\n" |
8296 | 8166 | ||
8297 | #: src/util/crypto_ecc.c:958 | 8167 | #: src/util/crypto_ecc.c:991 |
8298 | #, fuzzy, c-format | 8168 | #, fuzzy, c-format |
8299 | msgid "EdDSA signature verification failed at %s:%d: %s\n" | 8169 | msgid "EdDSA signature verification failed at %s:%d: %s\n" |
8300 | msgstr "RSA Signaturüberprüfung fehlgeschlagen bei %s:%d: %s\n" | 8170 | msgstr "RSA Signaturüberprüfung fehlgeschlagen bei %s:%d: %s\n" |
@@ -8518,22 +8388,22 @@ msgstr "" | |||
8518 | msgid "Manipulate GNUnet configuration files" | 8388 | msgid "Manipulate GNUnet configuration files" |
8519 | msgstr "GNUnet-Konfigurationsdateien bearbeiten" | 8389 | msgstr "GNUnet-Konfigurationsdateien bearbeiten" |
8520 | 8390 | ||
8521 | #: src/util/gnunet-ecc.c:89 | 8391 | #: src/util/gnunet-ecc.c:94 |
8522 | #, c-format | 8392 | #, c-format |
8523 | msgid "Failed to open `%s': %s\n" | 8393 | msgid "Failed to open `%s': %s\n" |
8524 | msgstr "»%s« kann nicht geöffnet werden: %s\n" | 8394 | msgstr "»%s« kann nicht geöffnet werden: %s\n" |
8525 | 8395 | ||
8526 | #: src/util/gnunet-ecc.c:125 | 8396 | #: src/util/gnunet-ecc.c:130 |
8527 | #, c-format | 8397 | #, c-format |
8528 | msgid "Generating %u keys like %s, please wait" | 8398 | msgid "Generating %u keys like %s, please wait" |
8529 | msgstr "" | 8399 | msgstr "" |
8530 | 8400 | ||
8531 | #: src/util/gnunet-ecc.c:138 | 8401 | #: src/util/gnunet-ecc.c:143 |
8532 | #, c-format | 8402 | #, c-format |
8533 | msgid "Generating %u keys, please wait" | 8403 | msgid "Generating %u keys, please wait" |
8534 | msgstr "" | 8404 | msgstr "" |
8535 | 8405 | ||
8536 | #: src/util/gnunet-ecc.c:179 | 8406 | #: src/util/gnunet-ecc.c:184 |
8537 | #, c-format | 8407 | #, c-format |
8538 | msgid "" | 8408 | msgid "" |
8539 | "\n" | 8409 | "\n" |
@@ -8542,7 +8412,7 @@ msgstr "" | |||
8542 | "\n" | 8412 | "\n" |
8543 | "Schreiben in »%s« nicht möglich: %s\n" | 8413 | "Schreiben in »%s« nicht möglich: %s\n" |
8544 | 8414 | ||
8545 | #: src/util/gnunet-ecc.c:189 | 8415 | #: src/util/gnunet-ecc.c:194 |
8546 | #, c-format | 8416 | #, c-format |
8547 | msgid "" | 8417 | msgid "" |
8548 | "\n" | 8418 | "\n" |
@@ -8551,57 +8421,61 @@ msgstr "" | |||
8551 | "\n" | 8421 | "\n" |
8552 | "Abgeschlossen!\n" | 8422 | "Abgeschlossen!\n" |
8553 | 8423 | ||
8554 | #: src/util/gnunet-ecc.c:192 | 8424 | #: src/util/gnunet-ecc.c:197 |
8555 | #, c-format | 8425 | #, c-format |
8556 | msgid "" | 8426 | msgid "" |
8557 | "\n" | 8427 | "\n" |
8558 | "Error, %u keys not generated\n" | 8428 | "Error, %u keys not generated\n" |
8559 | msgstr "" | 8429 | msgstr "" |
8560 | 8430 | ||
8561 | #: src/util/gnunet-ecc.c:283 | 8431 | #: src/util/gnunet-ecc.c:288 |
8562 | #, fuzzy, c-format | 8432 | #, fuzzy, c-format |
8563 | msgid "Hostkeys file `%s' not found\n" | 8433 | msgid "Hostkeys file `%s' not found\n" |
8564 | msgstr "Kommando `%s' wurde nicht gefunden!\n" | 8434 | msgstr "Kommando `%s' wurde nicht gefunden!\n" |
8565 | 8435 | ||
8566 | #: src/util/gnunet-ecc.c:294 | 8436 | #: src/util/gnunet-ecc.c:299 |
8567 | #, c-format | 8437 | #, c-format |
8568 | msgid "Hostkeys file `%s' is empty\n" | 8438 | msgid "Hostkeys file `%s' is empty\n" |
8569 | msgstr "" | 8439 | msgstr "" |
8570 | 8440 | ||
8571 | #: src/util/gnunet-ecc.c:316 | 8441 | #: src/util/gnunet-ecc.c:321 |
8572 | #, fuzzy, c-format | 8442 | #, fuzzy, c-format |
8573 | msgid "Could not read hostkey file: %s\n" | 8443 | msgid "Could not read hostkey file: %s\n" |
8574 | msgstr "PID konnte nicht in Datei `%s' geschrieben werden: %s.\n" | 8444 | msgstr "PID konnte nicht in Datei `%s' geschrieben werden: %s.\n" |
8575 | 8445 | ||
8576 | #: src/util/gnunet-ecc.c:367 | 8446 | #: src/util/gnunet-ecc.c:372 |
8577 | msgid "No hostkey file specified on command line\n" | 8447 | msgid "No hostkey file specified on command line\n" |
8578 | msgstr "" | 8448 | msgstr "" |
8579 | 8449 | ||
8580 | #: src/util/gnunet-ecc.c:425 | 8450 | #: src/util/gnunet-ecc.c:437 |
8581 | msgid "list keys included in a file (for testing)" | 8451 | msgid "list keys included in a file (for testing)" |
8582 | msgstr "" | 8452 | msgstr "" |
8583 | 8453 | ||
8584 | #: src/util/gnunet-ecc.c:430 | 8454 | #: src/util/gnunet-ecc.c:442 |
8585 | msgid "number of keys to list included in a file (for testing)" | 8455 | msgid "number of keys to list included in a file (for testing)" |
8586 | msgstr "" | 8456 | msgstr "" |
8587 | 8457 | ||
8588 | #: src/util/gnunet-ecc.c:435 | 8458 | #: src/util/gnunet-ecc.c:447 |
8589 | msgid "create COUNT public-private key pairs (for testing)" | 8459 | msgid "create COUNT public-private key pairs (for testing)" |
8590 | msgstr "" | 8460 | msgstr "" |
8591 | 8461 | ||
8592 | #: src/util/gnunet-ecc.c:439 | 8462 | #: src/util/gnunet-ecc.c:451 |
8593 | msgid "print the public key in ASCII format" | 8463 | msgid "print the public key in ASCII format" |
8594 | msgstr "" | 8464 | msgstr "" |
8595 | 8465 | ||
8596 | #: src/util/gnunet-ecc.c:443 | 8466 | #: src/util/gnunet-ecc.c:455 |
8467 | msgid "print the private key in ASCII format" | ||
8468 | msgstr "" | ||
8469 | |||
8470 | #: src/util/gnunet-ecc.c:459 | ||
8597 | msgid "print the public key in HEX format" | 8471 | msgid "print the public key in HEX format" |
8598 | msgstr "" | 8472 | msgstr "" |
8599 | 8473 | ||
8600 | #: src/util/gnunet-ecc.c:447 | 8474 | #: src/util/gnunet-ecc.c:463 |
8601 | msgid "print examples of ECC operations (used for compatibility testing)" | 8475 | msgid "print examples of ECC operations (used for compatibility testing)" |
8602 | msgstr "" | 8476 | msgstr "" |
8603 | 8477 | ||
8604 | #: src/util/gnunet-ecc.c:463 | 8478 | #: src/util/gnunet-ecc.c:479 |
8605 | msgid "Manipulate GNUnet private ECC key files" | 8479 | msgid "Manipulate GNUnet private ECC key files" |
8606 | msgstr "" | 8480 | msgstr "" |
8607 | 8481 | ||
@@ -8762,23 +8636,23 @@ msgstr "" | |||
8762 | "Sie müssen für `%s' in der Sektion `%s' der Konfigurationsdatei eine " | 8636 | "Sie müssen für `%s' in der Sektion `%s' der Konfigurationsdatei eine " |
8763 | "positive Zahl angeben.\n" | 8637 | "positive Zahl angeben.\n" |
8764 | 8638 | ||
8765 | #: src/util/resolver_api.c:826 | 8639 | #: src/util/resolver_api.c:827 |
8766 | #, fuzzy, c-format | 8640 | #, fuzzy, c-format |
8767 | msgid "Timeout trying to resolve hostname `%s'.\n" | 8641 | msgid "Timeout trying to resolve hostname `%s'.\n" |
8768 | msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n" | 8642 | msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n" |
8769 | 8643 | ||
8770 | #: src/util/resolver_api.c:839 | 8644 | #: src/util/resolver_api.c:840 |
8771 | #, c-format | 8645 | #, c-format |
8772 | msgid "Timeout trying to resolve IP address `%s'.\n" | 8646 | msgid "Timeout trying to resolve IP address `%s'.\n" |
8773 | msgstr "" | 8647 | msgstr "" |
8774 | 8648 | ||
8775 | #: src/util/resolver_api.c:1023 | 8649 | #: src/util/resolver_api.c:1024 |
8776 | #, fuzzy | 8650 | #, fuzzy |
8777 | msgid "Resolver not configured correctly.\n" | 8651 | msgid "Resolver not configured correctly.\n" |
8778 | msgstr "Standarddienst »%s« ist nicht korrekt eingerichtet!\n" | 8652 | msgstr "Standarddienst »%s« ist nicht korrekt eingerichtet!\n" |
8779 | 8653 | ||
8780 | #: src/util/resolver_api.c:1109 src/util/resolver_api.c:1132 | 8654 | #: src/util/resolver_api.c:1110 src/util/resolver_api.c:1133 |
8781 | #: src/util/resolver_api.c:1146 | 8655 | #: src/util/resolver_api.c:1147 |
8782 | #, fuzzy, c-format | 8656 | #, fuzzy, c-format |
8783 | msgid "Could not resolve our FQDN: %s\n" | 8657 | msgid "Could not resolve our FQDN: %s\n" |
8784 | msgstr "`%s' konnte nicht aufgelöst werden: %s\n" | 8658 | msgstr "`%s' konnte nicht aufgelöst werden: %s\n" |
@@ -8788,7 +8662,7 @@ msgid "" | |||
8788 | "Could not bind to any of the ports I was supposed to, refusing to run!\n" | 8662 | "Could not bind to any of the ports I was supposed to, refusing to run!\n" |
8789 | msgstr "" | 8663 | msgstr "" |
8790 | 8664 | ||
8791 | #: src/util/service.c:2081 | 8665 | #: src/util/service.c:2091 |
8792 | #, c-format | 8666 | #, c-format |
8793 | msgid "" | 8667 | msgid "" |
8794 | "Processing code for message of type %u did not call " | 8668 | "Processing code for message of type %u did not call " |
@@ -8971,65 +8845,65 @@ msgstr "" | |||
8971 | msgid "# ICMPv6 packets dropped (not allowed)" | 8845 | msgid "# ICMPv6 packets dropped (not allowed)" |
8972 | msgstr "" | 8846 | msgstr "" |
8973 | 8847 | ||
8974 | #: src/vpn/gnunet-service-vpn.c:2232 | 8848 | #: src/vpn/gnunet-service-vpn.c:2235 |
8975 | #, fuzzy | 8849 | #, fuzzy |
8976 | msgid "# Packets received from TUN interface" | 8850 | msgid "# Packets received from TUN interface" |
8977 | msgstr "" | 8851 | msgstr "" |
8978 | "Die Formatüberprüfung des Pakets, das von %s:%d (UDP6) empfangen wurde, " | 8852 | "Die Formatüberprüfung des Pakets, das von %s:%d (UDP6) empfangen wurde, " |
8979 | "schlug fehl." | 8853 | "schlug fehl." |
8980 | 8854 | ||
8981 | #: src/vpn/gnunet-service-vpn.c:2265 src/vpn/gnunet-service-vpn.c:2301 | 8855 | #: src/vpn/gnunet-service-vpn.c:2268 src/vpn/gnunet-service-vpn.c:2304 |
8982 | #, c-format | 8856 | #, c-format |
8983 | msgid "Packet received for unmapped destination `%s' (dropping it)\n" | 8857 | msgid "Packet received for unmapped destination `%s' (dropping it)\n" |
8984 | msgstr "" | 8858 | msgstr "" |
8985 | 8859 | ||
8986 | #: src/vpn/gnunet-service-vpn.c:2311 | 8860 | #: src/vpn/gnunet-service-vpn.c:2314 |
8987 | msgid "Received IPv4 packet with options (dropping it)\n" | 8861 | msgid "Received IPv4 packet with options (dropping it)\n" |
8988 | msgstr "" | 8862 | msgstr "" |
8989 | 8863 | ||
8990 | #: src/vpn/gnunet-service-vpn.c:2325 | 8864 | #: src/vpn/gnunet-service-vpn.c:2328 |
8991 | #, c-format | 8865 | #, c-format |
8992 | msgid "Received packet of unknown protocol %d from TUN (dropping it)\n" | 8866 | msgid "Received packet of unknown protocol %d from TUN (dropping it)\n" |
8993 | msgstr "" | 8867 | msgstr "" |
8994 | 8868 | ||
8995 | #: src/vpn/gnunet-service-vpn.c:2364 | 8869 | #: src/vpn/gnunet-service-vpn.c:2367 |
8996 | msgid "Failed to find unallocated IPv4 address in VPN's range\n" | 8870 | msgid "Failed to find unallocated IPv4 address in VPN's range\n" |
8997 | msgstr "" | 8871 | msgstr "" |
8998 | 8872 | ||
8999 | #: src/vpn/gnunet-service-vpn.c:2419 | 8873 | #: src/vpn/gnunet-service-vpn.c:2422 |
9000 | #, fuzzy | 8874 | #, fuzzy |
9001 | msgid "Failed to find unallocated IPv6 address in VPN's range\n" | 8875 | msgid "Failed to find unallocated IPv6 address in VPN's range\n" |
9002 | msgstr "Die öffentliche IPv6-Adresse konnte nicht ermittelt werden!\n" | 8876 | msgstr "Die öffentliche IPv6-Adresse konnte nicht ermittelt werden!\n" |
9003 | 8877 | ||
9004 | #: src/vpn/gnunet-service-vpn.c:2461 src/vpn/gnunet-service-vpn.c:2683 | 8878 | #: src/vpn/gnunet-service-vpn.c:2464 src/vpn/gnunet-service-vpn.c:2686 |
9005 | msgid "# Active destinations" | 8879 | msgid "# Active destinations" |
9006 | msgstr "" | 8880 | msgstr "" |
9007 | 8881 | ||
9008 | #: src/vpn/gnunet-service-vpn.c:2732 | 8882 | #: src/vpn/gnunet-service-vpn.c:2735 |
9009 | msgid "Failed to allocate IP address for new destination\n" | 8883 | msgid "Failed to allocate IP address for new destination\n" |
9010 | msgstr "" | 8884 | msgstr "" |
9011 | 8885 | ||
9012 | #: src/vpn/gnunet-service-vpn.c:2995 | 8886 | #: src/vpn/gnunet-service-vpn.c:2998 |
9013 | msgid "Must specify valid IPv6 address" | 8887 | msgid "Must specify valid IPv6 address" |
9014 | msgstr "" | 8888 | msgstr "" |
9015 | 8889 | ||
9016 | #: src/vpn/gnunet-service-vpn.c:3019 | 8890 | #: src/vpn/gnunet-service-vpn.c:3022 |
9017 | msgid "Must specify valid IPv6 mask" | 8891 | msgid "Must specify valid IPv6 mask" |
9018 | msgstr "" | 8892 | msgstr "" |
9019 | 8893 | ||
9020 | #: src/vpn/gnunet-service-vpn.c:3027 | 8894 | #: src/vpn/gnunet-service-vpn.c:3030 |
9021 | msgid "IPv6 support disabled as this system does not support IPv6\n" | 8895 | msgid "IPv6 support disabled as this system does not support IPv6\n" |
9022 | msgstr "" | 8896 | msgstr "" |
9023 | 8897 | ||
9024 | #: src/vpn/gnunet-service-vpn.c:3040 | 8898 | #: src/vpn/gnunet-service-vpn.c:3043 |
9025 | msgid "Must specify valid IPv4 address" | 8899 | msgid "Must specify valid IPv4 address" |
9026 | msgstr "" | 8900 | msgstr "" |
9027 | 8901 | ||
9028 | #: src/vpn/gnunet-service-vpn.c:3053 | 8902 | #: src/vpn/gnunet-service-vpn.c:3056 |
9029 | msgid "Must specify valid IPv4 mask" | 8903 | msgid "Must specify valid IPv4 mask" |
9030 | msgstr "" | 8904 | msgstr "" |
9031 | 8905 | ||
9032 | #: src/vpn/gnunet-service-vpn.c:3063 | 8906 | #: src/vpn/gnunet-service-vpn.c:3066 |
9033 | msgid "IPv4 support disabled as this system does not support IPv4\n" | 8907 | msgid "IPv4 support disabled as this system does not support IPv4\n" |
9034 | msgstr "" | 8908 | msgstr "" |
9035 | 8909 | ||
@@ -9120,10 +8994,6 @@ msgid "`%s' failed on file `%s' at %s:%d with error: %s\n" | |||
9120 | msgstr "`%s' schlug bei Datei `%s' fehl. Ort: %s:%d. Fehler: %s\n" | 8994 | msgstr "`%s' schlug bei Datei `%s' fehl. Ort: %s:%d. Fehler: %s\n" |
9121 | 8995 | ||
9122 | #, fuzzy | 8996 | #, fuzzy |
9123 | #~ msgid "Token `%s' is malformed\n" | ||
9124 | #~ msgstr "Schlüssel »%s« ist gültig\n" | ||
9125 | |||
9126 | #, fuzzy | ||
9127 | #~ msgid "Failed to create indices\n" | 8997 | #~ msgid "Failed to create indices\n" |
9128 | #~ msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n" | 8998 | #~ msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n" |
9129 | 8999 | ||
@@ -9163,6 +9033,10 @@ msgstr "`%s' schlug bei Datei `%s' fehl. Ort: %s:%d. Fehler: %s\n" | |||
9163 | #~ msgstr "Ausführliche Ausgabe" | 9033 | #~ msgstr "Ausführliche Ausgabe" |
9164 | 9034 | ||
9165 | #, fuzzy | 9035 | #, fuzzy |
9036 | #~ msgid "Specify the public key of the zone to reverse lookup a name for" | ||
9037 | #~ msgstr "Die Priorität des Inhalts angeben" | ||
9038 | |||
9039 | #, fuzzy | ||
9166 | #~ msgid "# UPDATE requests executed" | 9040 | #~ msgid "# UPDATE requests executed" |
9167 | #~ msgstr "# dht Anfragen weitergeleitet" | 9041 | #~ msgstr "# dht Anfragen weitergeleitet" |
9168 | 9042 | ||
@@ -7,7 +7,7 @@ msgid "" | |||
7 | msgstr "" | 7 | msgstr "" |
8 | "Project-Id-Version: gnunet 0.9.5a\n" | 8 | "Project-Id-Version: gnunet 0.9.5a\n" |
9 | "Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n" | 9 | "Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n" |
10 | "POT-Creation-Date: 2017-10-20 15:14+0000\n" | 10 | "POT-Creation-Date: 2018-01-02 02:33+0100\n" |
11 | "PO-Revision-Date: 2013-02-23 17:50+0100\n" | 11 | "PO-Revision-Date: 2013-02-23 17:50+0100\n" |
12 | "Last-Translator: Miguel Ángel Arruga Vivas <rosen644835@gmail.com>\n" | 12 | "Last-Translator: Miguel Ángel Arruga Vivas <rosen644835@gmail.com>\n" |
13 | "Language-Team: Spanish <es@li.org>\n" | 13 | "Language-Team: Spanish <es@li.org>\n" |
@@ -255,7 +255,7 @@ msgstr "" | |||
255 | "configuración!\n" | 255 | "configuración!\n" |
256 | 256 | ||
257 | #: src/arm/gnunet-service-arm.c:430 src/transport/plugin_transport_tcp.c:1176 | 257 | #: src/arm/gnunet-service-arm.c:430 src/transport/plugin_transport_tcp.c:1176 |
258 | #: src/transport/tcp_service_legacy.c:613 src/util/client.c:480 | 258 | #: src/transport/tcp_service_legacy.c:613 src/util/client.c:505 |
259 | #: src/util/service.c:682 | 259 | #: src/util/service.c:682 |
260 | #, c-format | 260 | #, c-format |
261 | msgid "UNIXPATH `%s' too long, maximum length is %llu\n" | 261 | msgid "UNIXPATH `%s' too long, maximum length is %llu\n" |
@@ -263,7 +263,7 @@ msgstr "" | |||
263 | "La ruta tipo UNIX «%s» es demasiado larga, la longitud máxima es %llu\n" | 263 | "La ruta tipo UNIX «%s» es demasiado larga, la longitud máxima es %llu\n" |
264 | 264 | ||
265 | #: src/arm/gnunet-service-arm.c:434 src/transport/plugin_transport_tcp.c:1180 | 265 | #: src/arm/gnunet-service-arm.c:434 src/transport/plugin_transport_tcp.c:1180 |
266 | #: src/transport/tcp_service_legacy.c:617 src/util/client.c:485 | 266 | #: src/transport/tcp_service_legacy.c:617 src/util/client.c:510 |
267 | #: src/util/service.c:687 | 267 | #: src/util/service.c:687 |
268 | #, c-format | 268 | #, c-format |
269 | msgid "Using `%s' instead\n" | 269 | msgid "Using `%s' instead\n" |
@@ -376,15 +376,151 @@ msgstr "El servicio «%s» finalizó con estado %s/%d, se reiniciará en %llu ms | |||
376 | msgid "Initiating shutdown as requested by client.\n" | 376 | msgid "Initiating shutdown as requested by client.\n" |
377 | msgstr "Iniciando apagado bajo petición del cliente.\n" | 377 | msgstr "Iniciando apagado bajo petición del cliente.\n" |
378 | 378 | ||
379 | #: src/ats-tests/ats-testing-log.c:837 | 379 | #: src/ats/gnunet-ats-solver-eval.c:2781 src/ats/gnunet-ats-solver-eval.c:2822 |
380 | msgid "Stop logging\n" | 380 | #, c-format |
381 | msgid "" | ||
382 | "Could not load quota for network `%s': `%s', assigning default bandwidth " | ||
383 | "%llu\n" | ||
381 | msgstr "" | 384 | msgstr "" |
385 | "No se pudieron cargar las cuotas para la red «%s»: «%s», asignando el ancho " | ||
386 | "de banda predeterminado %llu\n" | ||
382 | 387 | ||
383 | #: src/ats-tests/ats-testing-log.c:892 | 388 | #: src/ats/gnunet-ats-solver-eval.c:2799 |
384 | #, fuzzy, c-format | 389 | #, c-format |
385 | msgid "Start logging `%s'\n" | 390 | msgid "" |
391 | "No outbound quota configured for network `%s', assigning default bandwidth " | ||
392 | "%llu\n" | ||
393 | msgstr "" | ||
394 | "No hay configurada una cuota de salida para la red «%s», asignando el ancho " | ||
395 | "de banda predeterminado %llu\n" | ||
396 | |||
397 | #: src/ats/gnunet-ats-solver-eval.c:2840 | ||
398 | #, c-format | ||
399 | msgid "" | ||
400 | "No outbound quota configure for network `%s', assigning default bandwidth " | ||
401 | "%llu\n" | ||
402 | msgstr "" | ||
403 | "No hay configurada una cuota de salida para la red «%s», asignando el ancho " | ||
404 | "de banda predeterminado %llu\n" | ||
405 | |||
406 | #: src/ats/gnunet-ats-solver-eval.c:3294 src/ats-tests/gnunet-solver-eval.c:939 | ||
407 | #, fuzzy | ||
408 | msgid "solver to use" | ||
409 | msgstr "valor a establecer" | ||
410 | |||
411 | #: src/ats/gnunet-ats-solver-eval.c:3299 src/ats-tests/gnunet-solver-eval.c:945 | ||
412 | #: src/ats-tests/gnunet-solver-eval.c:950 | ||
413 | msgid "experiment to use" | ||
414 | msgstr "" | ||
415 | |||
416 | #: src/ats/gnunet-ats-solver-eval.c:3306 | ||
417 | #, fuzzy | ||
418 | msgid "print logging" | ||
386 | msgstr "Iniciando descarga «%s».\n" | 419 | msgstr "Iniciando descarga «%s».\n" |
387 | 420 | ||
421 | #: src/ats/gnunet-ats-solver-eval.c:3311 | ||
422 | msgid "save logging to disk" | ||
423 | msgstr "" | ||
424 | |||
425 | #: src/ats/gnunet-ats-solver-eval.c:3316 | ||
426 | msgid "disable normalization" | ||
427 | msgstr "" | ||
428 | |||
429 | #: src/ats/gnunet-service-ats_plugins.c:304 | ||
430 | #, fuzzy, c-format | ||
431 | msgid "" | ||
432 | "Could not load %s quota for network `%s': `%s', assigning default bandwidth " | ||
433 | "%llu\n" | ||
434 | msgstr "" | ||
435 | "No se pudieron cargar las cuotas para la red «%s»: «%s», asignando el ancho " | ||
436 | "de banda predeterminado %llu\n" | ||
437 | |||
438 | # Miguel: "Inbound" lo he traducido como entrada en todo el texto. | ||
439 | #: src/ats/gnunet-service-ats_plugins.c:314 | ||
440 | #, fuzzy, c-format | ||
441 | msgid "%s quota configured for network `%s' is %llu\n" | ||
442 | msgstr "La cuota de entrada configurada para la red «%s» es %llu\n" | ||
443 | |||
444 | #: src/ats/gnunet-service-ats_plugins.c:359 | ||
445 | #, fuzzy, c-format | ||
446 | msgid "" | ||
447 | "No %s-quota configured for network `%s', assigning default bandwidth %llu\n" | ||
448 | msgstr "" | ||
449 | "No hay configurada una cuota de salida para la red «%s», asignando el ancho " | ||
450 | "de banda predeterminado %llu\n" | ||
451 | |||
452 | #: src/ats/gnunet-service-ats_plugins.c:451 | ||
453 | #, fuzzy, c-format | ||
454 | msgid "Failed to initialize solver `%s'!\n" | ||
455 | msgstr "¡No se puede inicializar el resolvedor!\n" | ||
456 | |||
457 | #: src/ats/plugin_ats_mlp.c:1274 | ||
458 | msgid "Problem size too large, cannot allocate memory!\n" | ||
459 | msgstr "" | ||
460 | |||
461 | #: src/ats/plugin_ats_mlp.c:1869 | ||
462 | #, fuzzy, c-format | ||
463 | msgid "Adding address for peer `%s' multiple times\n" | ||
464 | msgstr "Añadiendo «%s» sin direcciones para el par «%s»\n" | ||
465 | |||
466 | #: src/ats/plugin_ats_mlp.c:1913 | ||
467 | #, fuzzy, c-format | ||
468 | msgid "Updating address property for peer `%s' %p not added before\n" | ||
469 | msgstr "Añadiendo «%s» sin direcciones para el par «%s»\n" | ||
470 | |||
471 | #: src/ats/plugin_ats_mlp.c:2475 | ||
472 | msgid "" | ||
473 | "MLP solver is not optimizing for anything, changing to feasibility check\n" | ||
474 | msgstr "" | ||
475 | |||
476 | #: src/ats/plugin_ats_mlp.c:2515 src/ats/plugin_ats_mlp.c:2532 | ||
477 | #: src/ats/plugin_ats_mlp.c:2564 src/ats/plugin_ats_mlp.c:2582 | ||
478 | #: src/ats/plugin_ats_mlp.c:2601 src/ats/plugin_ats_proportional.c:1141 | ||
479 | #: src/ats/plugin_ats_ril.c:2612 src/ats/plugin_ats_ril.c:2629 | ||
480 | #: src/ats/plugin_ats_ril.c:2646 src/ats/plugin_ats_ril.c:2663 | ||
481 | #: src/ats/plugin_ats_ril.c:2680 src/ats/plugin_ats_ril.c:2697 | ||
482 | #: src/ats/plugin_ats_ril.c:2714 src/ats/plugin_ats_ril.c:2731 | ||
483 | #, fuzzy, c-format | ||
484 | msgid "Invalid %s configuration %f \n" | ||
485 | msgstr "Se produjo un fallo al cargar la configuración de %s\n" | ||
486 | |||
487 | #: src/ats/plugin_ats_mlp.c:2670 | ||
488 | #, fuzzy, c-format | ||
489 | msgid "" | ||
490 | "Adjusting inconsistent outbound quota configuration for network `%s', is " | ||
491 | "%llu must be at least %llu\n" | ||
492 | msgstr "" | ||
493 | "No hay configurada una cuota de salida para la red «%s», asignando el ancho " | ||
494 | "de banda predeterminado %llu\n" | ||
495 | |||
496 | #: src/ats/plugin_ats_mlp.c:2679 | ||
497 | #, fuzzy, c-format | ||
498 | msgid "" | ||
499 | "Adjusting inconsistent inbound quota configuration for network `%s', is %llu " | ||
500 | "must be at least %llu\n" | ||
501 | msgstr "" | ||
502 | "No hay configuración de cuota de entrada para la red '%s', asignando el " | ||
503 | "ancho de banda predeterminado (%llu)\n" | ||
504 | |||
505 | # Miguel: "Outbound" lo he traducido como salida en todo el texto. | ||
506 | #: src/ats/plugin_ats_mlp.c:2689 | ||
507 | #, fuzzy, c-format | ||
508 | msgid "" | ||
509 | "Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n" | ||
510 | msgstr "La cuota de salida configurada para la red «%s» es %llu\n" | ||
511 | |||
512 | # Miguel: "Outbound" lo he traducido como salida en todo el texto. | ||
513 | #: src/ats/plugin_ats_mlp.c:2698 | ||
514 | #, fuzzy, c-format | ||
515 | msgid "" | ||
516 | "Adjusting inbound quota configuration for network `%s' from %llu to %.0f\n" | ||
517 | msgstr "La cuota de salida configurada para la red «%s» es %llu\n" | ||
518 | |||
519 | #: src/ats/plugin_ats_proportional.c:1164 | ||
520 | #, fuzzy, c-format | ||
521 | msgid "Invalid %s configuration %f\n" | ||
522 | msgstr "Se produjo un fallo al cargar la configuración de %s\n" | ||
523 | |||
388 | #: src/ats-tests/ats-testing.c:422 | 524 | #: src/ats-tests/ats-testing.c:422 |
389 | #, c-format | 525 | #, c-format |
390 | msgid "Connected master [%u] with slave [%u]\n" | 526 | msgid "Connected master [%u] with slave [%u]\n" |
@@ -395,6 +531,15 @@ msgstr "" | |||
395 | msgid "Failed to connect master peer [%u] with slave [%u]\n" | 531 | msgid "Failed to connect master peer [%u] with slave [%u]\n" |
396 | msgstr "Fallo al conectar a gnunetd.\n" | 532 | msgstr "Fallo al conectar a gnunetd.\n" |
397 | 533 | ||
534 | #: src/ats-tests/ats-testing-log.c:837 | ||
535 | msgid "Stop logging\n" | ||
536 | msgstr "" | ||
537 | |||
538 | #: src/ats-tests/ats-testing-log.c:892 | ||
539 | #, fuzzy, c-format | ||
540 | msgid "Start logging `%s'\n" | ||
541 | msgstr "Iniciando descarga «%s».\n" | ||
542 | |||
398 | #: src/ats-tests/gnunet-ats-sim.c:90 | 543 | #: src/ats-tests/gnunet-ats-sim.c:90 |
399 | #, c-format | 544 | #, c-format |
400 | msgid "" | 545 | msgid "" |
@@ -402,16 +547,6 @@ msgid "" | |||
402 | "= %u KiB/s\n" | 547 | "= %u KiB/s\n" |
403 | msgstr "" | 548 | msgstr "" |
404 | 549 | ||
405 | #: src/ats-tests/gnunet-solver-eval.c:939 src/ats/gnunet-ats-solver-eval.c:3294 | ||
406 | #, fuzzy | ||
407 | msgid "solver to use" | ||
408 | msgstr "valor a establecer" | ||
409 | |||
410 | #: src/ats-tests/gnunet-solver-eval.c:945 | ||
411 | #: src/ats-tests/gnunet-solver-eval.c:950 src/ats/gnunet-ats-solver-eval.c:3299 | ||
412 | msgid "experiment to use" | ||
413 | msgstr "" | ||
414 | |||
415 | # Miguel: ¿Como podría traducir "resolutions" y "resolve"? | 550 | # Miguel: ¿Como podría traducir "resolutions" y "resolve"? |
416 | # Son difíciles de no calcar, puesto que no conozco como expresar | 551 | # Son difíciles de no calcar, puesto que no conozco como expresar |
417 | # el concepto de obtener una dirección a partir de un nombre | 552 | # el concepto de obtener una dirección a partir de un nombre |
@@ -546,141 +681,6 @@ msgstr "salida prolija (incluye las propiedades de direcciones del ATS)" | |||
546 | msgid "Print information about ATS state" | 681 | msgid "Print information about ATS state" |
547 | msgstr "Imprime información acerca del estado del ATS" | 682 | msgstr "Imprime información acerca del estado del ATS" |
548 | 683 | ||
549 | #: src/ats/gnunet-ats-solver-eval.c:2781 src/ats/gnunet-ats-solver-eval.c:2822 | ||
550 | #, c-format | ||
551 | msgid "" | ||
552 | "Could not load quota for network `%s': `%s', assigning default bandwidth " | ||
553 | "%llu\n" | ||
554 | msgstr "" | ||
555 | "No se pudieron cargar las cuotas para la red «%s»: «%s», asignando el ancho " | ||
556 | "de banda predeterminado %llu\n" | ||
557 | |||
558 | #: src/ats/gnunet-ats-solver-eval.c:2799 | ||
559 | #, c-format | ||
560 | msgid "" | ||
561 | "No outbound quota configured for network `%s', assigning default bandwidth " | ||
562 | "%llu\n" | ||
563 | msgstr "" | ||
564 | "No hay configurada una cuota de salida para la red «%s», asignando el ancho " | ||
565 | "de banda predeterminado %llu\n" | ||
566 | |||
567 | #: src/ats/gnunet-ats-solver-eval.c:2840 | ||
568 | #, c-format | ||
569 | msgid "" | ||
570 | "No outbound quota configure for network `%s', assigning default bandwidth " | ||
571 | "%llu\n" | ||
572 | msgstr "" | ||
573 | "No hay configurada una cuota de salida para la red «%s», asignando el ancho " | ||
574 | "de banda predeterminado %llu\n" | ||
575 | |||
576 | #: src/ats/gnunet-ats-solver-eval.c:3306 | ||
577 | #, fuzzy | ||
578 | msgid "print logging" | ||
579 | msgstr "Iniciando descarga «%s».\n" | ||
580 | |||
581 | #: src/ats/gnunet-ats-solver-eval.c:3311 | ||
582 | msgid "save logging to disk" | ||
583 | msgstr "" | ||
584 | |||
585 | #: src/ats/gnunet-ats-solver-eval.c:3316 | ||
586 | msgid "disable normalization" | ||
587 | msgstr "" | ||
588 | |||
589 | #: src/ats/gnunet-service-ats_plugins.c:304 | ||
590 | #, fuzzy, c-format | ||
591 | msgid "" | ||
592 | "Could not load %s quota for network `%s': `%s', assigning default bandwidth " | ||
593 | "%llu\n" | ||
594 | msgstr "" | ||
595 | "No se pudieron cargar las cuotas para la red «%s»: «%s», asignando el ancho " | ||
596 | "de banda predeterminado %llu\n" | ||
597 | |||
598 | # Miguel: "Inbound" lo he traducido como entrada en todo el texto. | ||
599 | #: src/ats/gnunet-service-ats_plugins.c:314 | ||
600 | #, fuzzy, c-format | ||
601 | msgid "%s quota configured for network `%s' is %llu\n" | ||
602 | msgstr "La cuota de entrada configurada para la red «%s» es %llu\n" | ||
603 | |||
604 | #: src/ats/gnunet-service-ats_plugins.c:359 | ||
605 | #, fuzzy, c-format | ||
606 | msgid "" | ||
607 | "No %s-quota configured for network `%s', assigning default bandwidth %llu\n" | ||
608 | msgstr "" | ||
609 | "No hay configurada una cuota de salida para la red «%s», asignando el ancho " | ||
610 | "de banda predeterminado %llu\n" | ||
611 | |||
612 | #: src/ats/gnunet-service-ats_plugins.c:451 | ||
613 | #, fuzzy, c-format | ||
614 | msgid "Failed to initialize solver `%s'!\n" | ||
615 | msgstr "¡No se puede inicializar el resolvedor!\n" | ||
616 | |||
617 | #: src/ats/plugin_ats_mlp.c:1274 | ||
618 | msgid "Problem size too large, cannot allocate memory!\n" | ||
619 | msgstr "" | ||
620 | |||
621 | #: src/ats/plugin_ats_mlp.c:1869 | ||
622 | #, fuzzy, c-format | ||
623 | msgid "Adding address for peer `%s' multiple times\n" | ||
624 | msgstr "Añadiendo «%s» sin direcciones para el par «%s»\n" | ||
625 | |||
626 | #: src/ats/plugin_ats_mlp.c:1913 | ||
627 | #, fuzzy, c-format | ||
628 | msgid "Updating address property for peer `%s' %p not added before\n" | ||
629 | msgstr "Añadiendo «%s» sin direcciones para el par «%s»\n" | ||
630 | |||
631 | #: src/ats/plugin_ats_mlp.c:2475 | ||
632 | msgid "" | ||
633 | "MLP solver is not optimizing for anything, changing to feasibility check\n" | ||
634 | msgstr "" | ||
635 | |||
636 | #: src/ats/plugin_ats_mlp.c:2515 src/ats/plugin_ats_mlp.c:2532 | ||
637 | #: src/ats/plugin_ats_mlp.c:2564 src/ats/plugin_ats_mlp.c:2582 | ||
638 | #: src/ats/plugin_ats_mlp.c:2601 src/ats/plugin_ats_proportional.c:1141 | ||
639 | #: src/ats/plugin_ats_ril.c:2612 src/ats/plugin_ats_ril.c:2629 | ||
640 | #: src/ats/plugin_ats_ril.c:2646 src/ats/plugin_ats_ril.c:2663 | ||
641 | #: src/ats/plugin_ats_ril.c:2680 src/ats/plugin_ats_ril.c:2697 | ||
642 | #: src/ats/plugin_ats_ril.c:2714 src/ats/plugin_ats_ril.c:2731 | ||
643 | #, fuzzy, c-format | ||
644 | msgid "Invalid %s configuration %f \n" | ||
645 | msgstr "Se produjo un fallo al cargar la configuración de %s\n" | ||
646 | |||
647 | #: src/ats/plugin_ats_mlp.c:2670 | ||
648 | #, fuzzy, c-format | ||
649 | msgid "" | ||
650 | "Adjusting inconsistent outbound quota configuration for network `%s', is " | ||
651 | "%llu must be at least %llu\n" | ||
652 | msgstr "" | ||
653 | "No hay configurada una cuota de salida para la red «%s», asignando el ancho " | ||
654 | "de banda predeterminado %llu\n" | ||
655 | |||
656 | #: src/ats/plugin_ats_mlp.c:2679 | ||
657 | #, fuzzy, c-format | ||
658 | msgid "" | ||
659 | "Adjusting inconsistent inbound quota configuration for network `%s', is %llu " | ||
660 | "must be at least %llu\n" | ||
661 | msgstr "" | ||
662 | "No hay configuración de cuota de entrada para la red '%s', asignando el " | ||
663 | "ancho de banda predeterminado (%llu)\n" | ||
664 | |||
665 | # Miguel: "Outbound" lo he traducido como salida en todo el texto. | ||
666 | #: src/ats/plugin_ats_mlp.c:2689 | ||
667 | #, fuzzy, c-format | ||
668 | msgid "" | ||
669 | "Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n" | ||
670 | msgstr "La cuota de salida configurada para la red «%s» es %llu\n" | ||
671 | |||
672 | # Miguel: "Outbound" lo he traducido como salida en todo el texto. | ||
673 | #: src/ats/plugin_ats_mlp.c:2698 | ||
674 | #, fuzzy, c-format | ||
675 | msgid "" | ||
676 | "Adjusting inbound quota configuration for network `%s' from %llu to %.0f\n" | ||
677 | msgstr "La cuota de salida configurada para la red «%s» es %llu\n" | ||
678 | |||
679 | #: src/ats/plugin_ats_proportional.c:1164 | ||
680 | #, fuzzy, c-format | ||
681 | msgid "Invalid %s configuration %f\n" | ||
682 | msgstr "Se produjo un fallo al cargar la configuración de %s\n" | ||
683 | |||
684 | #: src/auction/gnunet-auction-create.c:163 | 684 | #: src/auction/gnunet-auction-create.c:163 |
685 | msgid "description of the item to be sold" | 685 | msgid "description of the item to be sold" |
686 | msgstr "" | 686 | msgstr "" |
@@ -728,58 +728,58 @@ msgstr "texto de ayuda" | |||
728 | msgid "Invalid peer ID `%s'\n" | 728 | msgid "Invalid peer ID `%s'\n" |
729 | msgstr "URI no válida: «%s»\n" | 729 | msgstr "URI no válida: «%s»\n" |
730 | 730 | ||
731 | #: src/cadet/gnunet-cadet.c:702 | 731 | #: src/cadet/gnunet-cadet.c:703 |
732 | #, fuzzy, c-format | 732 | #, fuzzy, c-format |
733 | msgid "Invalid tunnel owner `%s'\n" | 733 | msgid "Invalid tunnel owner `%s'\n" |
734 | msgstr "Formato de tiempo no válido «%s»\n" | 734 | msgstr "Formato de tiempo no válido «%s»\n" |
735 | 735 | ||
736 | #: src/cadet/gnunet-cadet.c:775 | 736 | #: src/cadet/gnunet-cadet.c:776 |
737 | msgid "Extra arguments are not applicable in combination with this option.\n" | 737 | msgid "Extra arguments are not applicable in combination with this option.\n" |
738 | msgstr "" | 738 | msgstr "" |
739 | 739 | ||
740 | #: src/cadet/gnunet-cadet.c:866 | 740 | #: src/cadet/gnunet-cadet.c:867 |
741 | #, fuzzy, c-format | 741 | #, fuzzy, c-format |
742 | msgid "Invalid target `%s'\n" | 742 | msgid "Invalid target `%s'\n" |
743 | msgstr "Parámetro no válido «%s»\n" | 743 | msgstr "Parámetro no válido «%s»\n" |
744 | 744 | ||
745 | #: src/cadet/gnunet-cadet.c:903 | 745 | #: src/cadet/gnunet-cadet.c:904 |
746 | #, fuzzy | 746 | #, fuzzy |
747 | msgid "No action requested\n" | 747 | msgid "No action requested\n" |
748 | msgstr "Colección detenida.\n" | 748 | msgstr "Colección detenida.\n" |
749 | 749 | ||
750 | #: src/cadet/gnunet-cadet.c:928 | 750 | #: src/cadet/gnunet-cadet.c:929 |
751 | #, fuzzy | 751 | #, fuzzy |
752 | msgid "Provide information about a particular connection" | 752 | msgid "Provide information about a particular connection" |
753 | msgstr "proveer información acerca de un túnel en particular" | 753 | msgstr "proveer información acerca de un túnel en particular" |
754 | 754 | ||
755 | #: src/cadet/gnunet-cadet.c:933 | 755 | #: src/cadet/gnunet-cadet.c:934 |
756 | msgid "Activate echo mode" | 756 | msgid "Activate echo mode" |
757 | msgstr "" | 757 | msgstr "" |
758 | 758 | ||
759 | #: src/cadet/gnunet-cadet.c:938 | 759 | #: src/cadet/gnunet-cadet.c:939 |
760 | msgid "Dump debug information to STDERR" | 760 | msgid "Dump debug information to STDERR" |
761 | msgstr "" | 761 | msgstr "" |
762 | 762 | ||
763 | #: src/cadet/gnunet-cadet.c:944 | 763 | #: src/cadet/gnunet-cadet.c:945 |
764 | msgid "Listen for connections using a shared secret among sender and recipient" | 764 | msgid "Listen for connections using a shared secret among sender and recipient" |
765 | msgstr "" | 765 | msgstr "" |
766 | 766 | ||
767 | #: src/cadet/gnunet-cadet.c:951 | 767 | #: src/cadet/gnunet-cadet.c:952 |
768 | #, fuzzy | 768 | #, fuzzy |
769 | msgid "Provide information about a patricular peer" | 769 | msgid "Provide information about a patricular peer" |
770 | msgstr "proveer información acerca de un túnel en particular" | 770 | msgstr "proveer información acerca de un túnel en particular" |
771 | 771 | ||
772 | #: src/cadet/gnunet-cadet.c:957 | 772 | #: src/cadet/gnunet-cadet.c:958 |
773 | #, fuzzy | 773 | #, fuzzy |
774 | msgid "Provide information about all peers" | 774 | msgid "Provide information about all peers" |
775 | msgstr "proveer información acerca de un túnel en particular" | 775 | msgstr "proveer información acerca de un túnel en particular" |
776 | 776 | ||
777 | #: src/cadet/gnunet-cadet.c:963 | 777 | #: src/cadet/gnunet-cadet.c:964 |
778 | #, fuzzy | 778 | #, fuzzy |
779 | msgid "Provide information about a particular tunnel" | 779 | msgid "Provide information about a particular tunnel" |
780 | msgstr "proveer información acerca de un túnel en particular" | 780 | msgstr "proveer información acerca de un túnel en particular" |
781 | 781 | ||
782 | #: src/cadet/gnunet-cadet.c:969 | 782 | #: src/cadet/gnunet-cadet.c:970 |
783 | #, fuzzy | 783 | #, fuzzy |
784 | msgid "Provide information about all tunnels" | 784 | msgid "Provide information about all tunnels" |
785 | msgstr "proveer información acerca de un túnel en particular" | 785 | msgstr "proveer información acerca de un túnel en particular" |
@@ -832,28 +832,6 @@ msgid "Connection to conversation service lost, trying to reconnect\n" | |||
832 | msgstr "" | 832 | msgstr "" |
833 | "El cliente se desconectó del servicio principal, tratando de reconectar.\n" | 833 | "El cliente se desconectó del servicio principal, tratando de reconectar.\n" |
834 | 834 | ||
835 | #: src/conversation/gnunet-conversation-test.c:119 | ||
836 | #, c-format | ||
837 | msgid "" | ||
838 | "\n" | ||
839 | "End of transmission. Have a GNU day.\n" | ||
840 | msgstr "" | ||
841 | |||
842 | #: src/conversation/gnunet-conversation-test.c:145 | ||
843 | #, c-format | ||
844 | msgid "" | ||
845 | "\n" | ||
846 | "We are now playing your recording back. If you can hear it, your audio " | ||
847 | "settings are working..." | ||
848 | msgstr "" | ||
849 | |||
850 | #: src/conversation/gnunet-conversation-test.c:210 | ||
851 | #, c-format | ||
852 | msgid "" | ||
853 | "We will now be recording you for %s. After that time, the recording will be " | ||
854 | "played back to you..." | ||
855 | msgstr "" | ||
856 | |||
857 | #: src/conversation/gnunet-conversation.c:269 | 835 | #: src/conversation/gnunet-conversation.c:269 |
858 | #, c-format | 836 | #, c-format |
859 | msgid "Incoming call from `%s'. Please /accept %u or /cancel %u the call.\n" | 837 | msgid "Incoming call from `%s'. Please /accept %u or /cancel %u the call.\n" |
@@ -1112,8 +1090,30 @@ msgstr "" | |||
1112 | msgid "Enables having a conversation with other GNUnet users." | 1090 | msgid "Enables having a conversation with other GNUnet users." |
1113 | msgstr "" | 1091 | msgstr "" |
1114 | 1092 | ||
1115 | #: src/conversation/gnunet-helper-audio-playback-gst.c:356 | 1093 | #: src/conversation/gnunet-conversation-test.c:119 |
1094 | #, c-format | ||
1095 | msgid "" | ||
1096 | "\n" | ||
1097 | "End of transmission. Have a GNU day.\n" | ||
1098 | msgstr "" | ||
1099 | |||
1100 | #: src/conversation/gnunet-conversation-test.c:145 | ||
1101 | #, c-format | ||
1102 | msgid "" | ||
1103 | "\n" | ||
1104 | "We are now playing your recording back. If you can hear it, your audio " | ||
1105 | "settings are working..." | ||
1106 | msgstr "" | ||
1107 | |||
1108 | #: src/conversation/gnunet-conversation-test.c:210 | ||
1109 | #, c-format | ||
1110 | msgid "" | ||
1111 | "We will now be recording you for %s. After that time, the recording will be " | ||
1112 | "played back to you..." | ||
1113 | msgstr "" | ||
1114 | |||
1116 | #: src/conversation/gnunet_gst.c:622 | 1115 | #: src/conversation/gnunet_gst.c:622 |
1116 | #: src/conversation/gnunet-helper-audio-playback-gst.c:361 | ||
1117 | #, c-format | 1117 | #, c-format |
1118 | msgid "Read error from STDIN: %d %s\n" | 1118 | msgid "Read error from STDIN: %d %s\n" |
1119 | msgstr "" | 1119 | msgstr "" |
@@ -1123,64 +1123,64 @@ msgstr "" | |||
1123 | msgid "pa_stream_write() failed: %s\n" | 1123 | msgid "pa_stream_write() failed: %s\n" |
1124 | msgstr "stadísticas (%s) falló: %s\n" | 1124 | msgstr "stadísticas (%s) falló: %s\n" |
1125 | 1125 | ||
1126 | #: src/conversation/gnunet-helper-audio-playback.c:607 | 1126 | #: src/conversation/gnunet-helper-audio-playback.c:612 |
1127 | msgid "gnunet-helper-audio-playback - Got signal, exiting\n" | 1127 | msgid "gnunet-helper-audio-playback - Got signal, exiting\n" |
1128 | msgstr "" | 1128 | msgstr "" |
1129 | 1129 | ||
1130 | #: src/conversation/gnunet-helper-audio-playback.c:632 | 1130 | #: src/conversation/gnunet-helper-audio-playback.c:637 |
1131 | #: src/conversation/gnunet-helper-audio-record.c:545 | 1131 | #: src/conversation/gnunet-helper-audio-record.c:545 |
1132 | #, fuzzy | 1132 | #, fuzzy |
1133 | msgid "Connection established.\n" | 1133 | msgid "Connection established.\n" |
1134 | msgstr "Colección detenida.\n" | 1134 | msgstr "Colección detenida.\n" |
1135 | 1135 | ||
1136 | #: src/conversation/gnunet-helper-audio-playback.c:637 | 1136 | #: src/conversation/gnunet-helper-audio-playback.c:642 |
1137 | #: src/conversation/gnunet-helper-audio-record.c:550 | 1137 | #: src/conversation/gnunet-helper-audio-record.c:550 |
1138 | #, fuzzy, c-format | 1138 | #, fuzzy, c-format |
1139 | msgid "pa_stream_new() failed: %s\n" | 1139 | msgid "pa_stream_new() failed: %s\n" |
1140 | msgstr "stadísticas (%s) falló: %s\n" | 1140 | msgstr "stadísticas (%s) falló: %s\n" |
1141 | 1141 | ||
1142 | #: src/conversation/gnunet-helper-audio-playback.c:651 | 1142 | #: src/conversation/gnunet-helper-audio-playback.c:656 |
1143 | #, c-format | 1143 | #, c-format |
1144 | msgid "pa_stream_connect_playback() failed: %s\n" | 1144 | msgid "pa_stream_connect_playback() failed: %s\n" |
1145 | msgstr "" | 1145 | msgstr "" |
1146 | 1146 | ||
1147 | #: src/conversation/gnunet-helper-audio-playback.c:664 | 1147 | #: src/conversation/gnunet-helper-audio-playback.c:669 |
1148 | #: src/conversation/gnunet-helper-audio-record.c:576 | 1148 | #: src/conversation/gnunet-helper-audio-record.c:576 |
1149 | #, fuzzy, c-format | 1149 | #, fuzzy, c-format |
1150 | msgid "Connection failure: %s\n" | 1150 | msgid "Connection failure: %s\n" |
1151 | msgstr "'%s' falló en %s: %d con error: '%s'.\n" | 1151 | msgstr "'%s' falló en %s: %d con error: '%s'.\n" |
1152 | 1152 | ||
1153 | #: src/conversation/gnunet-helper-audio-playback.c:685 | 1153 | #: src/conversation/gnunet-helper-audio-playback.c:690 |
1154 | #: src/conversation/gnunet-helper-audio-record.c:599 | 1154 | #: src/conversation/gnunet-helper-audio-record.c:599 |
1155 | #, fuzzy | 1155 | #, fuzzy |
1156 | msgid "Wrong Spec\n" | 1156 | msgid "Wrong Spec\n" |
1157 | msgstr "Servicio principal (CORE) erróneo\n" | 1157 | msgstr "Servicio principal (CORE) erróneo\n" |
1158 | 1158 | ||
1159 | #: src/conversation/gnunet-helper-audio-playback.c:691 | 1159 | #: src/conversation/gnunet-helper-audio-playback.c:696 |
1160 | #: src/conversation/gnunet-helper-audio-record.c:605 | 1160 | #: src/conversation/gnunet-helper-audio-record.c:605 |
1161 | #, fuzzy | 1161 | #, fuzzy |
1162 | msgid "pa_mainloop_new() failed.\n" | 1162 | msgid "pa_mainloop_new() failed.\n" |
1163 | msgstr "La operación ha fallado.\n" | 1163 | msgstr "La operación ha fallado.\n" |
1164 | 1164 | ||
1165 | #: src/conversation/gnunet-helper-audio-playback.c:705 | 1165 | #: src/conversation/gnunet-helper-audio-playback.c:710 |
1166 | #: src/conversation/gnunet-helper-audio-record.c:620 | 1166 | #: src/conversation/gnunet-helper-audio-record.c:620 |
1167 | #, fuzzy | 1167 | #, fuzzy |
1168 | msgid "pa_context_new() failed.\n" | 1168 | msgid "pa_context_new() failed.\n" |
1169 | msgstr "La operación ha fallado.\n" | 1169 | msgstr "La operación ha fallado.\n" |
1170 | 1170 | ||
1171 | #: src/conversation/gnunet-helper-audio-playback.c:712 | 1171 | #: src/conversation/gnunet-helper-audio-playback.c:717 |
1172 | #: src/conversation/gnunet-helper-audio-record.c:626 | 1172 | #: src/conversation/gnunet-helper-audio-record.c:626 |
1173 | #, fuzzy, c-format | 1173 | #, fuzzy, c-format |
1174 | msgid "pa_context_connect() failed: %s\n" | 1174 | msgid "pa_context_connect() failed: %s\n" |
1175 | msgstr "# reconexiones rápidas fallidas" | 1175 | msgstr "# reconexiones rápidas fallidas" |
1176 | 1176 | ||
1177 | #: src/conversation/gnunet-helper-audio-playback.c:718 | 1177 | #: src/conversation/gnunet-helper-audio-playback.c:723 |
1178 | #: src/conversation/gnunet-helper-audio-record.c:632 | 1178 | #: src/conversation/gnunet-helper-audio-record.c:632 |
1179 | #, fuzzy | 1179 | #, fuzzy |
1180 | msgid "pa_mainloop_run() failed.\n" | 1180 | msgid "pa_mainloop_run() failed.\n" |
1181 | msgstr "La operación ha fallado.\n" | 1181 | msgstr "La operación ha fallado.\n" |
1182 | 1182 | ||
1183 | #: src/conversation/gnunet-helper-audio-playback.c:790 | 1183 | #: src/conversation/gnunet-helper-audio-playback.c:795 |
1184 | #, c-format | 1184 | #, c-format |
1185 | msgid "Read error from STDIN: %s\n" | 1185 | msgid "Read error from STDIN: %s\n" |
1186 | msgstr "" | 1186 | msgstr "" |
@@ -1250,7 +1250,7 @@ msgstr "" | |||
1250 | msgid "Could not open line, port %s already in use!\n" | 1250 | msgid "Could not open line, port %s already in use!\n" |
1251 | msgstr "¡No se pudo conectar al servicio %s!\n" | 1251 | msgstr "¡No se pudo conectar al servicio %s!\n" |
1252 | 1252 | ||
1253 | #: src/conversation/microphone.c:119 | 1253 | #: src/conversation/microphone.c:121 |
1254 | #, fuzzy | 1254 | #, fuzzy |
1255 | msgid "Could not start record audio helper\n" | 1255 | msgid "Could not start record audio helper\n" |
1256 | msgstr "No se pudo empezar la operación de desindexado.\n" | 1256 | msgstr "No se pudo empezar la operación de desindexado.\n" |
@@ -1343,27 +1343,27 @@ msgstr "# peticiones de envío descartadas (desconectado)" | |||
1343 | msgid "# dequeuing CAR (duplicate request)" | 1343 | msgid "# dequeuing CAR (duplicate request)" |
1344 | msgstr "" | 1344 | msgstr "" |
1345 | 1345 | ||
1346 | #: src/core/gnunet-service-core.c:440 | 1346 | #: src/core/gnunet-service-core.c:443 |
1347 | #, c-format | 1347 | #, c-format |
1348 | msgid "# bytes of messages of type %u received" | 1348 | msgid "# bytes of messages of type %u received" |
1349 | msgstr "# bytes de mensajes del tipo %u recibidos" | 1349 | msgstr "# bytes de mensajes del tipo %u recibidos" |
1350 | 1350 | ||
1351 | #: src/core/gnunet-service-core.c:538 | 1351 | #: src/core/gnunet-service-core.c:541 |
1352 | msgid "# messages discarded (session disconnected)" | 1352 | msgid "# messages discarded (session disconnected)" |
1353 | msgstr "# mensajes descartados (sesión desconectada)" | 1353 | msgstr "# mensajes descartados (sesión desconectada)" |
1354 | 1354 | ||
1355 | #: src/core/gnunet-service-core.c:876 | 1355 | #: src/core/gnunet-service-core.c:879 |
1356 | #, fuzzy, c-format | 1356 | #, fuzzy, c-format |
1357 | msgid "# messages of type %u discarded (client busy)" | 1357 | msgid "# messages of type %u discarded (client busy)" |
1358 | msgstr "# bytes de mensajes del tipo %u recibidos" | 1358 | msgstr "# bytes de mensajes del tipo %u recibidos" |
1359 | 1359 | ||
1360 | #: src/core/gnunet-service-core.c:985 | 1360 | #: src/core/gnunet-service-core.c:988 |
1361 | msgid "Core service is lacking HOSTKEY configuration setting. Exiting.\n" | 1361 | msgid "Core service is lacking HOSTKEY configuration setting. Exiting.\n" |
1362 | msgstr "" | 1362 | msgstr "" |
1363 | "Al servicio principal le falta la configuración de la clave de máquina " | 1363 | "Al servicio principal le falta la configuración de la clave de máquina " |
1364 | "(HOSTKEY). Saliendo.\n" | 1364 | "(HOSTKEY). Saliendo.\n" |
1365 | 1365 | ||
1366 | #: src/core/gnunet-service-core.c:1006 | 1366 | #: src/core/gnunet-service-core.c:1009 |
1367 | #, fuzzy, c-format | 1367 | #, fuzzy, c-format |
1368 | msgid "Core service of `%s' ready.\n" | 1368 | msgid "Core service of `%s' ready.\n" |
1369 | msgstr "El servicio principal de «%4s» está listo.\n" | 1369 | msgstr "El servicio principal de «%4s» está listo.\n" |
@@ -1376,134 +1376,134 @@ msgstr "# bytes cifrados" | |||
1376 | msgid "# bytes decrypted" | 1376 | msgid "# bytes decrypted" |
1377 | msgstr "# bytes descifrados" | 1377 | msgstr "# bytes descifrados" |
1378 | 1378 | ||
1379 | #: src/core/gnunet-service-core_kx.c:725 | 1379 | #: src/core/gnunet-service-core_kx.c:728 |
1380 | #, fuzzy | 1380 | #, fuzzy |
1381 | msgid "# PAYLOAD dropped (out of order)" | 1381 | msgid "# PAYLOAD dropped (out of order)" |
1382 | msgstr "# bytes omitidos (fuera de secuencia)" | 1382 | msgstr "# bytes omitidos (fuera de secuencia)" |
1383 | 1383 | ||
1384 | #: src/core/gnunet-service-core_kx.c:775 | 1384 | #: src/core/gnunet-service-core_kx.c:778 |
1385 | msgid "# key exchanges initiated" | 1385 | msgid "# key exchanges initiated" |
1386 | msgstr "# intercambio de claves iniciados" | 1386 | msgstr "# intercambio de claves iniciados" |
1387 | 1387 | ||
1388 | #: src/core/gnunet-service-core_kx.c:837 | 1388 | #: src/core/gnunet-service-core_kx.c:840 |
1389 | msgid "# key exchanges stopped" | 1389 | msgid "# key exchanges stopped" |
1390 | msgstr "# intercambio de claves parados" | 1390 | msgstr "# intercambio de claves parados" |
1391 | 1391 | ||
1392 | #: src/core/gnunet-service-core_kx.c:871 | 1392 | #: src/core/gnunet-service-core_kx.c:874 |
1393 | #, fuzzy | 1393 | #, fuzzy |
1394 | msgid "# PING messages transmitted" | 1394 | msgid "# PING messages transmitted" |
1395 | msgstr "# mensajes PONG creados" | 1395 | msgstr "# mensajes PONG creados" |
1396 | 1396 | ||
1397 | #: src/core/gnunet-service-core_kx.c:938 | 1397 | #: src/core/gnunet-service-core_kx.c:941 |
1398 | msgid "# old ephemeral keys ignored" | 1398 | msgid "# old ephemeral keys ignored" |
1399 | msgstr "" | 1399 | msgstr "" |
1400 | 1400 | ||
1401 | #: src/core/gnunet-service-core_kx.c:945 | 1401 | #: src/core/gnunet-service-core_kx.c:948 |
1402 | #, fuzzy | 1402 | #, fuzzy |
1403 | msgid "# ephemeral keys received" | 1403 | msgid "# ephemeral keys received" |
1404 | msgstr "# mapas de tipos recibidos" | 1404 | msgstr "# mapas de tipos recibidos" |
1405 | 1405 | ||
1406 | #: src/core/gnunet-service-core_kx.c:984 | 1406 | #: src/core/gnunet-service-core_kx.c:987 |
1407 | #, c-format | 1407 | #, c-format |
1408 | msgid "" | 1408 | msgid "" |
1409 | "Ephemeral key message from peer `%s' rejected as its validity range does not " | 1409 | "Ephemeral key message from peer `%s' rejected as its validity range does not " |
1410 | "match our system time (%llu not in [%llu,%llu]).\n" | 1410 | "match our system time (%llu not in [%llu,%llu]).\n" |
1411 | msgstr "" | 1411 | msgstr "" |
1412 | 1412 | ||
1413 | #: src/core/gnunet-service-core_kx.c:995 | 1413 | #: src/core/gnunet-service-core_kx.c:998 |
1414 | #, fuzzy | 1414 | #, fuzzy |
1415 | msgid "# EPHEMERAL_KEY messages received" | 1415 | msgid "# EPHEMERAL_KEY messages received" |
1416 | msgstr "# mensajes «SET_KEY» descifrados" | 1416 | msgstr "# mensajes «SET_KEY» descifrados" |
1417 | 1417 | ||
1418 | #: src/core/gnunet-service-core_kx.c:1091 | 1418 | #: src/core/gnunet-service-core_kx.c:1094 |
1419 | #: src/transport/gnunet-service-transport_validation.c:1119 | 1419 | #: src/transport/gnunet-service-transport_validation.c:1128 |
1420 | msgid "# PING messages received" | 1420 | msgid "# PING messages received" |
1421 | msgstr "# mensajes PING recibidos" | 1421 | msgstr "# mensajes PING recibidos" |
1422 | 1422 | ||
1423 | #: src/core/gnunet-service-core_kx.c:1100 | 1423 | #: src/core/gnunet-service-core_kx.c:1103 |
1424 | #, fuzzy | 1424 | #, fuzzy |
1425 | msgid "# PING messages dropped (out of order)" | 1425 | msgid "# PING messages dropped (out of order)" |
1426 | msgstr "# Mensajes P2P omitidos debido a saturación de la cola" | 1426 | msgstr "# Mensajes P2P omitidos debido a saturación de la cola" |
1427 | 1427 | ||
1428 | #: src/core/gnunet-service-core_kx.c:1158 | 1428 | #: src/core/gnunet-service-core_kx.c:1161 |
1429 | msgid "# PONG messages created" | 1429 | msgid "# PONG messages created" |
1430 | msgstr "# mensajes PONG creados" | 1430 | msgstr "# mensajes PONG creados" |
1431 | 1431 | ||
1432 | #: src/core/gnunet-service-core_kx.c:1184 | 1432 | #: src/core/gnunet-service-core_kx.c:1187 |
1433 | msgid "# sessions terminated by timeout" | 1433 | msgid "# sessions terminated by timeout" |
1434 | msgstr "# sesiones terminadas por plazo de expiración" | 1434 | msgstr "# sesiones terminadas por plazo de expiración" |
1435 | 1435 | ||
1436 | #: src/core/gnunet-service-core_kx.c:1197 | 1436 | #: src/core/gnunet-service-core_kx.c:1200 |
1437 | msgid "# keepalive messages sent" | 1437 | msgid "# keepalive messages sent" |
1438 | msgstr "# mensajes «keepalive» enviados" | 1438 | msgstr "# mensajes «keepalive» enviados" |
1439 | 1439 | ||
1440 | #: src/core/gnunet-service-core_kx.c:1261 | 1440 | #: src/core/gnunet-service-core_kx.c:1264 |
1441 | #: src/transport/gnunet-service-transport_validation.c:1442 | 1441 | #: src/transport/gnunet-service-transport_validation.c:1461 |
1442 | msgid "# PONG messages received" | 1442 | msgid "# PONG messages received" |
1443 | msgstr "# mensajes PONG recibidos" | 1443 | msgstr "# mensajes PONG recibidos" |
1444 | 1444 | ||
1445 | #: src/core/gnunet-service-core_kx.c:1268 | 1445 | #: src/core/gnunet-service-core_kx.c:1271 |
1446 | #, fuzzy | 1446 | #, fuzzy |
1447 | msgid "# PONG messages dropped (connection down)" | 1447 | msgid "# PONG messages dropped (connection down)" |
1448 | msgstr "# mensajes PONG recibidos" | 1448 | msgstr "# mensajes PONG recibidos" |
1449 | 1449 | ||
1450 | #: src/core/gnunet-service-core_kx.c:1273 | 1450 | #: src/core/gnunet-service-core_kx.c:1276 |
1451 | #, fuzzy | 1451 | #, fuzzy |
1452 | msgid "# PONG messages dropped (out of order)" | 1452 | msgid "# PONG messages dropped (out of order)" |
1453 | msgstr "# Mensajes P2P omitidos debido a saturación de la cola" | 1453 | msgstr "# Mensajes P2P omitidos debido a saturación de la cola" |
1454 | 1454 | ||
1455 | #: src/core/gnunet-service-core_kx.c:1308 | 1455 | #: src/core/gnunet-service-core_kx.c:1311 |
1456 | msgid "# PONG messages decrypted" | 1456 | msgid "# PONG messages decrypted" |
1457 | msgstr "# mensajes PONG descifrados" | 1457 | msgstr "# mensajes PONG descifrados" |
1458 | 1458 | ||
1459 | #: src/core/gnunet-service-core_kx.c:1346 | 1459 | #: src/core/gnunet-service-core_kx.c:1349 |
1460 | msgid "# session keys confirmed via PONG" | 1460 | msgid "# session keys confirmed via PONG" |
1461 | msgstr "# claves de sesión confirmadas vía PONG" | 1461 | msgstr "# claves de sesión confirmadas vía PONG" |
1462 | 1462 | ||
1463 | #: src/core/gnunet-service-core_kx.c:1357 | 1463 | #: src/core/gnunet-service-core_kx.c:1360 |
1464 | #, fuzzy | 1464 | #, fuzzy |
1465 | msgid "# timeouts prevented via PONG" | 1465 | msgid "# timeouts prevented via PONG" |
1466 | msgstr "# bytes recibidos vía TCP" | 1466 | msgstr "# bytes recibidos vía TCP" |
1467 | 1467 | ||
1468 | #: src/core/gnunet-service-core_kx.c:1364 | 1468 | #: src/core/gnunet-service-core_kx.c:1367 |
1469 | msgid "# rekey operations confirmed via PONG" | 1469 | msgid "# rekey operations confirmed via PONG" |
1470 | msgstr "# operaciones de cambio de clave confirmadas vía PONG" | 1470 | msgstr "# operaciones de cambio de clave confirmadas vía PONG" |
1471 | 1471 | ||
1472 | #: src/core/gnunet-service-core_kx.c:1518 | 1472 | #: src/core/gnunet-service-core_kx.c:1521 |
1473 | #, fuzzy | 1473 | #, fuzzy |
1474 | msgid "# DATA message dropped (out of order)" | 1474 | msgid "# DATA message dropped (out of order)" |
1475 | msgstr "# bytes omitidos (fuera de secuencia)" | 1475 | msgstr "# bytes omitidos (fuera de secuencia)" |
1476 | 1476 | ||
1477 | #: src/core/gnunet-service-core_kx.c:1526 | 1477 | #: src/core/gnunet-service-core_kx.c:1529 |
1478 | #, c-format | 1478 | #, c-format |
1479 | msgid "" | 1479 | msgid "" |
1480 | "Session to peer `%s' went down due to key expiration (should not happen)\n" | 1480 | "Session to peer `%s' went down due to key expiration (should not happen)\n" |
1481 | msgstr "" | 1481 | msgstr "" |
1482 | 1482 | ||
1483 | #: src/core/gnunet-service-core_kx.c:1529 | 1483 | #: src/core/gnunet-service-core_kx.c:1532 |
1484 | #, fuzzy | 1484 | #, fuzzy |
1485 | msgid "# sessions terminated by key expiration" | 1485 | msgid "# sessions terminated by key expiration" |
1486 | msgstr "# sesiones terminadas por plazo de expiración" | 1486 | msgstr "# sesiones terminadas por plazo de expiración" |
1487 | 1487 | ||
1488 | #: src/core/gnunet-service-core_kx.c:1590 | 1488 | #: src/core/gnunet-service-core_kx.c:1593 |
1489 | #: src/core/gnunet-service-core_kx.c:1616 | 1489 | #: src/core/gnunet-service-core_kx.c:1619 |
1490 | msgid "# bytes dropped (duplicates)" | 1490 | msgid "# bytes dropped (duplicates)" |
1491 | msgstr "# bytes omitidos (duplicados)" | 1491 | msgstr "# bytes omitidos (duplicados)" |
1492 | 1492 | ||
1493 | #: src/core/gnunet-service-core_kx.c:1603 | 1493 | #: src/core/gnunet-service-core_kx.c:1606 |
1494 | msgid "# bytes dropped (out of sequence)" | 1494 | msgid "# bytes dropped (out of sequence)" |
1495 | msgstr "# bytes omitidos (fuera de secuencia)" | 1495 | msgstr "# bytes omitidos (fuera de secuencia)" |
1496 | 1496 | ||
1497 | #: src/core/gnunet-service-core_kx.c:1645 | 1497 | #: src/core/gnunet-service-core_kx.c:1648 |
1498 | msgid "# bytes dropped (ancient message)" | 1498 | msgid "# bytes dropped (ancient message)" |
1499 | msgstr "# bytes omitidos (mensaje antiguo)" | 1499 | msgstr "# bytes omitidos (mensaje antiguo)" |
1500 | 1500 | ||
1501 | #: src/core/gnunet-service-core_kx.c:1653 | 1501 | #: src/core/gnunet-service-core_kx.c:1656 |
1502 | msgid "# bytes of payload decrypted" | 1502 | msgid "# bytes of payload decrypted" |
1503 | msgstr "# bytes de «payload» descifrados" | 1503 | msgstr "# bytes de «payload» descifrados" |
1504 | 1504 | ||
1505 | #: src/core/gnunet-service-core_sessions.c:266 | 1505 | #: src/core/gnunet-service-core_sessions.c:260 |
1506 | #: src/core/gnunet-service-core_sessions.c:356 | 1506 | #: src/core/gnunet-service-core_sessions.c:350 |
1507 | #: src/dht/gnunet-service-dht_neighbours.c:733 | 1507 | #: src/dht/gnunet-service-dht_neighbours.c:733 |
1508 | #: src/dht/gnunet-service-dht_neighbours.c:795 | 1508 | #: src/dht/gnunet-service-dht_neighbours.c:795 |
1509 | #: src/fs/gnunet-service-fs_cp.c:615 src/fs/gnunet-service-fs_cp.c:1520 | 1509 | #: src/fs/gnunet-service-fs_cp.c:615 src/fs/gnunet-service-fs_cp.c:1520 |
@@ -1514,16 +1514,16 @@ msgstr "# bytes de «payload» descifrados" | |||
1514 | msgid "# peers connected" | 1514 | msgid "# peers connected" |
1515 | msgstr "# pares conectados" | 1515 | msgstr "# pares conectados" |
1516 | 1516 | ||
1517 | #: src/core/gnunet-service-core_sessions.c:302 | 1517 | #: src/core/gnunet-service-core_sessions.c:296 |
1518 | msgid "# type map refreshes sent" | 1518 | msgid "# type map refreshes sent" |
1519 | msgstr "# envíos de refrescos del mapa de tipos" | 1519 | msgstr "# envíos de refrescos del mapa de tipos" |
1520 | 1520 | ||
1521 | #: src/core/gnunet-service-core_sessions.c:422 | 1521 | #: src/core/gnunet-service-core_sessions.c:416 |
1522 | #, fuzzy | 1522 | #, fuzzy |
1523 | msgid "# outdated typemap confirmations received" | 1523 | msgid "# outdated typemap confirmations received" |
1524 | msgstr "Se produjo un fallo al encolar una confirmación de recepción\n" | 1524 | msgstr "Se produjo un fallo al encolar una confirmación de recepción\n" |
1525 | 1525 | ||
1526 | #: src/core/gnunet-service-core_sessions.c:439 | 1526 | #: src/core/gnunet-service-core_sessions.c:433 |
1527 | #, fuzzy | 1527 | #, fuzzy |
1528 | msgid "# valid typemap confirmations received" | 1528 | msgid "# valid typemap confirmations received" |
1529 | msgstr "Se produjo un fallo al encolar una confirmación de recepción\n" | 1529 | msgstr "Se produjo un fallo al encolar una confirmación de recepción\n" |
@@ -1537,138 +1537,6 @@ msgstr "# mapas de tipos recibidos" | |||
1537 | msgid "# updates to my type map" | 1537 | msgid "# updates to my type map" |
1538 | msgstr "# actualizaciones de mi mapa de tipos" | 1538 | msgstr "# actualizaciones de mi mapa de tipos" |
1539 | 1539 | ||
1540 | #: src/credential/credential_misc.c:88 | ||
1541 | #, fuzzy, c-format | ||
1542 | msgid "Unable to parse CRED record string `%s'\n" | ||
1543 | msgstr "No se pudo procesar la cadena de registro VPN «%s»\n" | ||
1544 | |||
1545 | #: src/credential/gnunet-credential.c:278 src/namestore/gnunet-namestore.c:776 | ||
1546 | #: src/namestore/plugin_rest_namestore.c:1009 | ||
1547 | #, fuzzy, c-format | ||
1548 | msgid "Ego `%s' not known to identity service\n" | ||
1549 | msgstr "'%s': servicio desconocido: %s\n" | ||
1550 | |||
1551 | #: src/credential/gnunet-credential.c:294 | ||
1552 | #: src/credential/gnunet-credential.c:446 | ||
1553 | #, fuzzy, c-format | ||
1554 | msgid "Issuer public key `%s' is not well-formed\n" | ||
1555 | msgstr "El bloque del tipo %u está mal formado\n" | ||
1556 | |||
1557 | #: src/credential/gnunet-credential.c:375 | ||
1558 | #: src/credential/gnunet-credential.c:435 | ||
1559 | #, fuzzy, c-format | ||
1560 | msgid "Issuer public key not well-formed\n" | ||
1561 | msgstr "El bloque del tipo %u está mal formado\n" | ||
1562 | |||
1563 | #: src/credential/gnunet-credential.c:386 | ||
1564 | #: src/credential/gnunet-credential.c:455 | ||
1565 | #, fuzzy, c-format | ||
1566 | msgid "Failed to connect to CREDENTIAL\n" | ||
1567 | msgstr "Se produjo un fallo al conectar con GNS\n" | ||
1568 | |||
1569 | #: src/credential/gnunet-credential.c:392 | ||
1570 | #, c-format | ||
1571 | msgid "You must provide issuer the attribute\n" | ||
1572 | msgstr "" | ||
1573 | |||
1574 | #: src/credential/gnunet-credential.c:399 | ||
1575 | #, fuzzy, c-format | ||
1576 | msgid "ego required\n" | ||
1577 | msgstr "Tipo requerido\n" | ||
1578 | |||
1579 | #: src/credential/gnunet-credential.c:415 | ||
1580 | #, c-format | ||
1581 | msgid "Subject public key needed\n" | ||
1582 | msgstr "" | ||
1583 | |||
1584 | #: src/credential/gnunet-credential.c:426 | ||
1585 | #, fuzzy, c-format | ||
1586 | msgid "Subject public key `%s' is not well-formed\n" | ||
1587 | msgstr "El bloque del tipo %u está mal formado\n" | ||
1588 | |||
1589 | #: src/credential/gnunet-credential.c:461 | ||
1590 | #, c-format | ||
1591 | msgid "You must provide issuer and subject attributes\n" | ||
1592 | msgstr "" | ||
1593 | |||
1594 | #: src/credential/gnunet-credential.c:511 | ||
1595 | #, fuzzy, c-format | ||
1596 | msgid "Issuer ego required\n" | ||
1597 | msgstr "Tipo requerido\n" | ||
1598 | |||
1599 | #: src/credential/gnunet-credential.c:523 | ||
1600 | #, c-format | ||
1601 | msgid "Please specify name to lookup, subject key and issuer key!\n" | ||
1602 | msgstr "" | ||
1603 | |||
1604 | #: src/credential/gnunet-credential.c:543 | ||
1605 | msgid "create credential" | ||
1606 | msgstr "" | ||
1607 | |||
1608 | #: src/credential/gnunet-credential.c:547 | ||
1609 | msgid "verify credential against attribute" | ||
1610 | msgstr "" | ||
1611 | |||
1612 | #: src/credential/gnunet-credential.c:552 | ||
1613 | #, fuzzy | ||
1614 | msgid "The public key of the subject to lookup the credential for" | ||
1615 | msgstr "Especificar el tipo del registro a buscar" | ||
1616 | |||
1617 | #: src/credential/gnunet-credential.c:557 | ||
1618 | msgid "The name of the credential presented by the subject" | ||
1619 | msgstr "" | ||
1620 | |||
1621 | #: src/credential/gnunet-credential.c:562 | ||
1622 | #, fuzzy | ||
1623 | msgid "The public key of the authority to verify the credential against" | ||
1624 | msgstr "Especificar el tipo del registro a buscar" | ||
1625 | |||
1626 | #: src/credential/gnunet-credential.c:567 | ||
1627 | #, fuzzy | ||
1628 | msgid "The ego to use" | ||
1629 | msgstr "tamaño del mensaje" | ||
1630 | |||
1631 | #: src/credential/gnunet-credential.c:572 | ||
1632 | msgid "The issuer attribute to verify against or to issue" | ||
1633 | msgstr "" | ||
1634 | |||
1635 | #: src/credential/gnunet-credential.c:577 | ||
1636 | msgid "The time to live for the credential" | ||
1637 | msgstr "" | ||
1638 | |||
1639 | #: src/credential/gnunet-credential.c:581 | ||
1640 | msgid "collect credentials" | ||
1641 | msgstr "" | ||
1642 | |||
1643 | #: src/credential/gnunet-credential.c:595 | ||
1644 | #, fuzzy | ||
1645 | msgid "GNUnet credential resolver tool" | ||
1646 | msgstr "Herramienta de acceso GNUnet GNS" | ||
1647 | |||
1648 | #: src/credential/gnunet-service-credential.c:1204 | ||
1649 | #: src/gns/gnunet-gns-helper-service-w32.c:727 src/gns/gnunet-gns.c:355 | ||
1650 | #, c-format | ||
1651 | msgid "Failed to connect to GNS\n" | ||
1652 | msgstr "Se produjo un fallo al conectar con GNS\n" | ||
1653 | |||
1654 | #: src/credential/gnunet-service-credential.c:1210 | ||
1655 | #: src/namestore/gnunet-namestore-fcfsd.c:1034 | ||
1656 | #: src/namestore/gnunet-namestore.c:802 | ||
1657 | #: src/namestore/plugin_rest_namestore.c:1022 | ||
1658 | #, c-format | ||
1659 | msgid "Failed to connect to namestore\n" | ||
1660 | msgstr "Se produjo un fallo al conectar con el almacén de nombres\n" | ||
1661 | |||
1662 | #: src/credential/plugin_gnsrecord_credential.c:186 | ||
1663 | #, fuzzy, c-format | ||
1664 | msgid "Unable to parse ATTR record string `%s'\n" | ||
1665 | msgstr "No se pudo procesar la cadena de registro TLSA «%s»\n" | ||
1666 | |||
1667 | #: src/credential/plugin_rest_credential.c:1155 src/gns/plugin_rest_gns.c:668 | ||
1668 | #, fuzzy | ||
1669 | msgid "GNS REST API initialized\n" | ||
1670 | msgstr "Conexión fallida\n" | ||
1671 | |||
1672 | #: src/datacache/datacache.c:119 src/datacache/datacache.c:294 | 1540 | #: src/datacache/datacache.c:119 src/datacache/datacache.c:294 |
1673 | #: src/datastore/gnunet-service-datastore.c:757 | 1541 | #: src/datastore/gnunet-service-datastore.c:757 |
1674 | msgid "# bytes stored" | 1542 | msgid "# bytes stored" |
@@ -1715,9 +1583,8 @@ msgstr "Caché de datos de montículo (heap) ejecutándose\n" | |||
1715 | #: src/datacache/plugin_datacache_sqlite.c:122 | 1583 | #: src/datacache/plugin_datacache_sqlite.c:122 |
1716 | #: src/datastore/plugin_datastore_mysql.c:892 | 1584 | #: src/datastore/plugin_datastore_mysql.c:892 |
1717 | #: src/datastore/plugin_datastore_sqlite.c:58 | 1585 | #: src/datastore/plugin_datastore_sqlite.c:58 |
1718 | #: src/datastore/plugin_datastore_sqlite.c:66 | 1586 | #: src/datastore/plugin_datastore_sqlite.c:66 src/my/my.c:80 src/my/my.c:92 |
1719 | #: src/identity-provider/plugin_identity_provider_sqlite.c:52 src/my/my.c:80 | 1587 | #: src/mysql/mysql.c:42 src/mysql/mysql.c:49 |
1720 | #: src/my/my.c:92 src/mysql/mysql.c:42 src/mysql/mysql.c:49 | ||
1721 | #: src/namecache/plugin_namecache_sqlite.c:53 | 1588 | #: src/namecache/plugin_namecache_sqlite.c:53 |
1722 | #: src/namestore/plugin_namestore_sqlite.c:53 | 1589 | #: src/namestore/plugin_namestore_sqlite.c:53 |
1723 | #: src/peerstore/plugin_peerstore_sqlite.c:52 | 1590 | #: src/peerstore/plugin_peerstore_sqlite.c:52 |
@@ -1735,7 +1602,6 @@ msgstr "«%s» falló en %s: %d con el error: %s\n" | |||
1735 | 1602 | ||
1736 | #: src/datacache/plugin_datacache_sqlite.c:817 | 1603 | #: src/datacache/plugin_datacache_sqlite.c:817 |
1737 | #: src/datastore/plugin_datastore_sqlite.c:456 | 1604 | #: src/datastore/plugin_datastore_sqlite.c:456 |
1738 | #: src/identity-provider/plugin_identity_provider_sqlite.c:336 | ||
1739 | #: src/namecache/plugin_namecache_sqlite.c:296 | 1605 | #: src/namecache/plugin_namecache_sqlite.c:296 |
1740 | #: src/namestore/plugin_namestore_sqlite.c:355 | 1606 | #: src/namestore/plugin_namestore_sqlite.c:355 |
1741 | msgid "Tried to close sqlite without finalizing all prepared statements.\n" | 1607 | msgid "Tried to close sqlite without finalizing all prepared statements.\n" |
@@ -1760,7 +1626,7 @@ msgstr "# desbordamientos de la cola" | |||
1760 | msgid "# queue entries created" | 1626 | msgid "# queue entries created" |
1761 | msgstr "# entradas creadas en la cola" | 1627 | msgstr "# entradas creadas en la cola" |
1762 | 1628 | ||
1763 | #: src/datastore/datastore_api.c:740 | 1629 | #: src/datastore/datastore_api.c:760 |
1764 | msgid "# status messages received" | 1630 | msgid "# status messages received" |
1765 | msgstr "# mensajes de estado recibidos" | 1631 | msgstr "# mensajes de estado recibidos" |
1766 | 1632 | ||
@@ -1768,35 +1634,35 @@ msgstr "# mensajes de estado recibidos" | |||
1768 | msgid "# Results received" | 1634 | msgid "# Results received" |
1769 | msgstr "# Resultados recibidos" | 1635 | msgstr "# Resultados recibidos" |
1770 | 1636 | ||
1771 | #: src/datastore/datastore_api.c:941 | 1637 | #: src/datastore/datastore_api.c:920 |
1772 | msgid "# datastore connections (re)created" | 1638 | msgid "# datastore connections (re)created" |
1773 | msgstr "# conexiones a almacenes de datos (re)creadas" | 1639 | msgstr "# conexiones a almacenes de datos (re)creadas" |
1774 | 1640 | ||
1775 | #: src/datastore/datastore_api.c:1055 | 1641 | #: src/datastore/datastore_api.c:1034 |
1776 | msgid "# PUT requests executed" | 1642 | msgid "# PUT requests executed" |
1777 | msgstr "# peticiones «PUT» ejecutadas" | 1643 | msgstr "# peticiones «PUT» ejecutadas" |
1778 | 1644 | ||
1779 | #: src/datastore/datastore_api.c:1116 | 1645 | #: src/datastore/datastore_api.c:1095 |
1780 | msgid "# RESERVE requests executed" | 1646 | msgid "# RESERVE requests executed" |
1781 | msgstr "# peticiones «RESERVE» ejecutadas" | 1647 | msgstr "# peticiones «RESERVE» ejecutadas" |
1782 | 1648 | ||
1783 | #: src/datastore/datastore_api.c:1181 | 1649 | #: src/datastore/datastore_api.c:1160 |
1784 | msgid "# RELEASE RESERVE requests executed" | 1650 | msgid "# RELEASE RESERVE requests executed" |
1785 | msgstr "# Peticiones «RELEASE RESERVE» ejecutadas" | 1651 | msgstr "# Peticiones «RELEASE RESERVE» ejecutadas" |
1786 | 1652 | ||
1787 | #: src/datastore/datastore_api.c:1259 | 1653 | #: src/datastore/datastore_api.c:1238 |
1788 | msgid "# REMOVE requests executed" | 1654 | msgid "# REMOVE requests executed" |
1789 | msgstr "# peticiones «REMOVE» ejecutadas" | 1655 | msgstr "# peticiones «REMOVE» ejecutadas" |
1790 | 1656 | ||
1791 | #: src/datastore/datastore_api.c:1319 | 1657 | #: src/datastore/datastore_api.c:1298 |
1792 | msgid "# GET REPLICATION requests executed" | 1658 | msgid "# GET REPLICATION requests executed" |
1793 | msgstr "# peticiones «GET REPLICATION» ejecutadas" | 1659 | msgstr "# peticiones «GET REPLICATION» ejecutadas" |
1794 | 1660 | ||
1795 | #: src/datastore/datastore_api.c:1381 | 1661 | #: src/datastore/datastore_api.c:1360 |
1796 | msgid "# GET ZERO ANONYMITY requests executed" | 1662 | msgid "# GET ZERO ANONYMITY requests executed" |
1797 | msgstr "# peticiones «GET ZERO ANONYMITY» ejecutadas" | 1663 | msgstr "# peticiones «GET ZERO ANONYMITY» ejecutadas" |
1798 | 1664 | ||
1799 | #: src/datastore/datastore_api.c:1462 | 1665 | #: src/datastore/datastore_api.c:1441 |
1800 | msgid "# GET requests executed" | 1666 | msgid "# GET requests executed" |
1801 | msgstr "# peticiones «GET» ejecutadas" | 1667 | msgstr "# peticiones «GET» ejecutadas" |
1802 | 1668 | ||
@@ -2083,7 +1949,6 @@ msgid "`%s' failed at %s:%u with error: %s" | |||
2083 | msgstr "«%s» falló en %s:%u con el error: %s" | 1949 | msgstr "«%s» falló en %s:%u con el error: %s" |
2084 | 1950 | ||
2085 | #: src/datastore/plugin_datastore_sqlite.c:271 | 1951 | #: src/datastore/plugin_datastore_sqlite.c:271 |
2086 | #: src/identity-provider/plugin_identity_provider_sqlite.c:212 | ||
2087 | #: src/namecache/plugin_namecache_sqlite.c:194 | 1952 | #: src/namecache/plugin_namecache_sqlite.c:194 |
2088 | #: src/namestore/plugin_namestore_sqlite.c:222 | 1953 | #: src/namestore/plugin_namestore_sqlite.c:222 |
2089 | #: src/peerstore/plugin_peerstore_sqlite.c:535 | 1954 | #: src/peerstore/plugin_peerstore_sqlite.c:535 |
@@ -2113,7 +1978,6 @@ msgstr "" | |||
2113 | "páginas de %llu bytes de tamaño)\n" | 1978 | "páginas de %llu bytes de tamaño)\n" |
2114 | 1979 | ||
2115 | #: src/datastore/plugin_datastore_sqlite.c:1337 | 1980 | #: src/datastore/plugin_datastore_sqlite.c:1337 |
2116 | #: src/identity-provider/plugin_identity_provider_sqlite.c:711 | ||
2117 | #: src/namecache/plugin_namecache_sqlite.c:603 | 1981 | #: src/namecache/plugin_namecache_sqlite.c:603 |
2118 | #: src/namestore/plugin_namestore_sqlite.c:802 | 1982 | #: src/namestore/plugin_namestore_sqlite.c:802 |
2119 | msgid "Sqlite database running\n" | 1983 | msgid "Sqlite database running\n" |
@@ -2183,6 +2047,53 @@ msgstr "ser prolijo (imprime información de progreso)" | |||
2183 | msgid "Prints all packets that go through the DHT." | 2047 | msgid "Prints all packets that go through the DHT." |
2184 | msgstr "Imprime todos los paquetes que pasan por la DHT." | 2048 | msgstr "Imprime todos los paquetes que pasan por la DHT." |
2185 | 2049 | ||
2050 | #: src/dht/gnunet_dht_profiler.c:1161 src/testbed/gnunet-testbed-profiler.c:253 | ||
2051 | #, fuzzy, c-format | ||
2052 | msgid "Exiting as the number of peers is %u\n" | ||
2053 | msgstr "El número máximo de conexiones es %u\n" | ||
2054 | |||
2055 | #: src/dht/gnunet_dht_profiler.c:1188 | ||
2056 | msgid "number of peers to start" | ||
2057 | msgstr "número de pares para empezar" | ||
2058 | |||
2059 | #: src/dht/gnunet_dht_profiler.c:1194 | ||
2060 | msgid "" | ||
2061 | "maximum number of times we try to search for successor circle formation (0 " | ||
2062 | "for R5N)" | ||
2063 | msgstr "" | ||
2064 | |||
2065 | #: src/dht/gnunet_dht_profiler.c:1200 src/nse/gnunet-nse-profiler.c:853 | ||
2066 | #: src/testbed/gnunet-testbed-profiler.c:304 | ||
2067 | msgid "name of the file with the login information for the testbed" | ||
2068 | msgstr "" | ||
2069 | "nombre del fichero con la información de acceso usada para la batería de " | ||
2070 | "pruebas" | ||
2071 | |||
2072 | #: src/dht/gnunet_dht_profiler.c:1206 | ||
2073 | msgid "delay between rounds for collecting statistics (default: 30 sec)" | ||
2074 | msgstr "" | ||
2075 | |||
2076 | #: src/dht/gnunet_dht_profiler.c:1212 | ||
2077 | msgid "delay to start doing PUTs (default: 1 sec)" | ||
2078 | msgstr "" | ||
2079 | |||
2080 | #: src/dht/gnunet_dht_profiler.c:1218 | ||
2081 | msgid "delay to start doing GETs (default: 5 min)" | ||
2082 | msgstr "" | ||
2083 | |||
2084 | #: src/dht/gnunet_dht_profiler.c:1223 | ||
2085 | msgid "replication degree for DHT PUTs" | ||
2086 | msgstr "" | ||
2087 | |||
2088 | #: src/dht/gnunet_dht_profiler.c:1230 | ||
2089 | msgid "timeout for DHT PUT and GET requests (default: 1 min)" | ||
2090 | msgstr "" | ||
2091 | |||
2092 | #: src/dht/gnunet_dht_profiler.c:1248 | ||
2093 | #, fuzzy | ||
2094 | msgid "Measure quality and performance of the DHT service." | ||
2095 | msgstr "Medir la calidad y rendimiento del servicio NSE." | ||
2096 | |||
2186 | #: src/dht/gnunet-dht-put.c:120 | 2097 | #: src/dht/gnunet-dht-put.c:120 |
2187 | msgid "PUT request sent with key" | 2098 | msgid "PUT request sent with key" |
2188 | msgstr "Petición «PUT» enviada con clave" | 2099 | msgstr "Petición «PUT» enviada con clave" |
@@ -2449,53 +2360,6 @@ msgstr "# Entradas añadidas a la tabla de encaminamiento" | |||
2449 | msgid "# DHT requests combined" | 2360 | msgid "# DHT requests combined" |
2450 | msgstr "# Peticiones a la DHT combinadas" | 2361 | msgstr "# Peticiones a la DHT combinadas" |
2451 | 2362 | ||
2452 | #: src/dht/gnunet_dht_profiler.c:1161 src/testbed/gnunet-testbed-profiler.c:255 | ||
2453 | #, fuzzy, c-format | ||
2454 | msgid "Exiting as the number of peers is %u\n" | ||
2455 | msgstr "El número máximo de conexiones es %u\n" | ||
2456 | |||
2457 | #: src/dht/gnunet_dht_profiler.c:1188 | ||
2458 | msgid "number of peers to start" | ||
2459 | msgstr "número de pares para empezar" | ||
2460 | |||
2461 | #: src/dht/gnunet_dht_profiler.c:1194 | ||
2462 | msgid "" | ||
2463 | "maximum number of times we try to search for successor circle formation (0 " | ||
2464 | "for R5N)" | ||
2465 | msgstr "" | ||
2466 | |||
2467 | #: src/dht/gnunet_dht_profiler.c:1200 src/nse/gnunet-nse-profiler.c:853 | ||
2468 | #: src/testbed/gnunet-testbed-profiler.c:305 | ||
2469 | msgid "name of the file with the login information for the testbed" | ||
2470 | msgstr "" | ||
2471 | "nombre del fichero con la información de acceso usada para la batería de " | ||
2472 | "pruebas" | ||
2473 | |||
2474 | #: src/dht/gnunet_dht_profiler.c:1206 | ||
2475 | msgid "delay between rounds for collecting statistics (default: 30 sec)" | ||
2476 | msgstr "" | ||
2477 | |||
2478 | #: src/dht/gnunet_dht_profiler.c:1212 | ||
2479 | msgid "delay to start doing PUTs (default: 1 sec)" | ||
2480 | msgstr "" | ||
2481 | |||
2482 | #: src/dht/gnunet_dht_profiler.c:1218 | ||
2483 | msgid "delay to start doing GETs (default: 5 min)" | ||
2484 | msgstr "" | ||
2485 | |||
2486 | #: src/dht/gnunet_dht_profiler.c:1223 | ||
2487 | msgid "replication degree for DHT PUTs" | ||
2488 | msgstr "" | ||
2489 | |||
2490 | #: src/dht/gnunet_dht_profiler.c:1230 | ||
2491 | msgid "timeout for DHT PUT and GET requests (default: 1 min)" | ||
2492 | msgstr "" | ||
2493 | |||
2494 | #: src/dht/gnunet_dht_profiler.c:1248 | ||
2495 | #, fuzzy | ||
2496 | msgid "Measure quality and performance of the DHT service." | ||
2497 | msgstr "Medir la calidad y rendimiento del servicio NSE." | ||
2498 | |||
2499 | #: src/dht/plugin_block_dht.c:187 | 2363 | #: src/dht/plugin_block_dht.c:187 |
2500 | #, c-format | 2364 | #, c-format |
2501 | msgid "Block not of type %u\n" | 2365 | msgid "Block not of type %u\n" |
@@ -3069,7 +2933,7 @@ msgstr "" | |||
3069 | msgid "Failed to not connect to `%s' service.\n" | 2933 | msgid "Failed to not connect to `%s' service.\n" |
3070 | msgstr "Se produjo un fallo al conectar con el servicio «%s».\n" | 2934 | msgstr "Se produjo un fallo al conectar con el servicio «%s».\n" |
3071 | 2935 | ||
3072 | #: src/fs/fs_misc.c:126 | 2936 | #: src/fs/fs_misc.c:128 |
3073 | #, c-format | 2937 | #, c-format |
3074 | msgid "Did not find mime type `%s' in extension list.\n" | 2938 | msgid "Did not find mime type `%s' in extension list.\n" |
3075 | msgstr "No se encontró el tipo MIME «%s» en la lista de extensiones.\n" | 2939 | msgstr "No se encontró el tipo MIME «%s» en la lista de extensiones.\n" |
@@ -3518,6 +3382,14 @@ msgstr "" | |||
3518 | "Descargar ficheros de GNUnet usando una URI GNUnet CHK o LOC (gnunet://fs/" | 3382 | "Descargar ficheros de GNUnet usando una URI GNUnet CHK o LOC (gnunet://fs/" |
3519 | "chk/...)" | 3383 | "chk/...)" |
3520 | 3384 | ||
3385 | #: src/fs/gnunet-fs.c:119 | ||
3386 | msgid "print a list of all indexed files" | ||
3387 | msgstr "imprimir una lista de todos los ficheros indexados" | ||
3388 | |||
3389 | #: src/fs/gnunet-fs.c:130 | ||
3390 | msgid "Special file-sharing operations" | ||
3391 | msgstr "Operaciones especiales de compartición de ficheros" | ||
3392 | |||
3521 | #: src/fs/gnunet-fs-profiler.c:211 | 3393 | #: src/fs/gnunet-fs-profiler.c:211 |
3522 | msgid "run the experiment with COUNT peers" | 3394 | msgid "run the experiment with COUNT peers" |
3523 | msgstr "ejecuta el experimento con «COUNT» pares" | 3395 | msgstr "ejecuta el experimento con «COUNT» pares" |
@@ -3538,14 +3410,6 @@ msgstr "" | |||
3538 | "ejecuta una batería de pruebas para medir el rendimiento de la compartición " | 3410 | "ejecuta una batería de pruebas para medir el rendimiento de la compartición " |
3539 | "de ficheros" | 3411 | "de ficheros" |
3540 | 3412 | ||
3541 | #: src/fs/gnunet-fs.c:119 | ||
3542 | msgid "print a list of all indexed files" | ||
3543 | msgstr "imprimir una lista de todos los ficheros indexados" | ||
3544 | |||
3545 | #: src/fs/gnunet-fs.c:130 | ||
3546 | msgid "Special file-sharing operations" | ||
3547 | msgstr "Operaciones especiales de compartición de ficheros" | ||
3548 | |||
3549 | #: src/fs/gnunet-publish.c:219 src/fs/gnunet-publish.c:231 | 3413 | #: src/fs/gnunet-publish.c:219 src/fs/gnunet-publish.c:231 |
3550 | #, c-format | 3414 | #, c-format |
3551 | msgid "Publishing `%s' at %llu/%llu (%s remaining)\n" | 3415 | msgid "Publishing `%s' at %llu/%llu (%s remaining)\n" |
@@ -4242,11 +4106,22 @@ msgstr "" | |||
4242 | msgid "GNUnet DNS-to-GNS proxy (a DNS server)" | 4106 | msgid "GNUnet DNS-to-GNS proxy (a DNS server)" |
4243 | msgstr "Pasarela GNUnet DNS-a-GNS (un servidor DNS)" | 4107 | msgstr "Pasarela GNUnet DNS-a-GNS (un servidor DNS)" |
4244 | 4108 | ||
4245 | #: src/gns/gnunet-gns-helper-service-w32.c:602 | 4109 | #: src/gns/gnunet-gns.c:235 src/gns/plugin_rest_gns.c:346 |
4246 | msgid "Not ready to process requests, lacking ego data\n" | 4110 | #, c-format |
4111 | msgid "Invalid typename specified, assuming `ANY'\n" | ||
4112 | msgstr "" | ||
4113 | |||
4114 | #: src/gns/gnunet-gns.c:252 | ||
4115 | #, c-format | ||
4116 | msgid "Please specify name to lookup!\n" | ||
4247 | msgstr "" | 4117 | msgstr "" |
4248 | 4118 | ||
4249 | #: src/gns/gnunet-gns-helper-service-w32.c:701 src/gns/gnunet-gns.c:315 | 4119 | #: src/gns/gnunet-gns.c:276 |
4120 | #, c-format | ||
4121 | msgid "Ego for `%s' not found, cannot perform lookup.\n" | ||
4122 | msgstr "" | ||
4123 | |||
4124 | #: src/gns/gnunet-gns.c:315 src/gns/gnunet-gns-helper-service-w32.c:701 | ||
4250 | #: src/gns/plugin_rest_gns.c:422 | 4125 | #: src/gns/plugin_rest_gns.c:422 |
4251 | #, c-format | 4126 | #, c-format |
4252 | msgid "" | 4127 | msgid "" |
@@ -4254,6 +4129,52 @@ msgid "" | |||
4254 | "gns-import.sh?\n" | 4129 | "gns-import.sh?\n" |
4255 | msgstr "" | 4130 | msgstr "" |
4256 | 4131 | ||
4132 | #: src/gns/gnunet-gns.c:355 src/gns/gnunet-gns-helper-service-w32.c:727 | ||
4133 | #, c-format | ||
4134 | msgid "Failed to connect to GNS\n" | ||
4135 | msgstr "Se produjo un fallo al conectar con GNS\n" | ||
4136 | |||
4137 | #: src/gns/gnunet-gns.c:374 | ||
4138 | #, c-format | ||
4139 | msgid "Public key `%s' is not well-formed\n" | ||
4140 | msgstr "" | ||
4141 | |||
4142 | #: src/gns/gnunet-gns.c:428 | ||
4143 | msgid "Lookup a record for the given name" | ||
4144 | msgstr "Buscar el registro para el nombre dado" | ||
4145 | |||
4146 | #: src/gns/gnunet-gns.c:434 | ||
4147 | msgid "Specify the type of the record to lookup" | ||
4148 | msgstr "Especificar el tipo del registro a buscar" | ||
4149 | |||
4150 | #: src/gns/gnunet-gns.c:440 | ||
4151 | #, fuzzy | ||
4152 | msgid "Specify timeout for the lookup" | ||
4153 | msgstr "Especificar el tipo del registro a buscar" | ||
4154 | |||
4155 | #: src/gns/gnunet-gns.c:445 | ||
4156 | msgid "No unneeded output" | ||
4157 | msgstr "Sin salida innecesaria" | ||
4158 | |||
4159 | #: src/gns/gnunet-gns.c:451 | ||
4160 | #, fuzzy | ||
4161 | msgid "Specify the public key of the zone to lookup the record in" | ||
4162 | msgstr "Especificar el tipo del registro a buscar" | ||
4163 | |||
4164 | #: src/gns/gnunet-gns.c:457 | ||
4165 | #, fuzzy | ||
4166 | msgid "Specify the name of the ego of the zone to lookup the record in" | ||
4167 | msgstr "Especificar el tipo del registro a buscar" | ||
4168 | |||
4169 | #: src/gns/gnunet-gns.c:476 | ||
4170 | #, fuzzy | ||
4171 | msgid "GNUnet GNS resolver tool" | ||
4172 | msgstr "Herramienta de acceso GNUnet GNS" | ||
4173 | |||
4174 | #: src/gns/gnunet-gns-helper-service-w32.c:602 | ||
4175 | msgid "Not ready to process requests, lacking ego data\n" | ||
4176 | msgstr "" | ||
4177 | |||
4257 | #: src/gns/gnunet-gns-helper-service-w32.c:739 | 4178 | #: src/gns/gnunet-gns-helper-service-w32.c:739 |
4258 | #, fuzzy, c-format | 4179 | #, fuzzy, c-format |
4259 | msgid "Failed to connect to identity service\n" | 4180 | msgid "Failed to connect to identity service\n" |
@@ -4278,165 +4199,113 @@ msgstr "" | |||
4278 | msgid "%s failed at %s:%d: `%s'\n" | 4199 | msgid "%s failed at %s:%d: `%s'\n" |
4279 | msgstr "%s falló en %s:%d: «%s».\n" | 4200 | msgstr "%s falló en %s:%d: «%s».\n" |
4280 | 4201 | ||
4281 | #: src/gns/gnunet-gns-proxy.c:878 | 4202 | #: src/gns/gnunet-gns-proxy.c:887 |
4282 | #, fuzzy, c-format | 4203 | #, fuzzy, c-format |
4283 | msgid "Unsupported CURL SSL backend %d\n" | 4204 | msgid "Unsupported CURL SSL backend %d\n" |
4284 | msgstr "Tipo de bloque %u no soportado\n" | 4205 | msgstr "Tipo de bloque %u no soportado\n" |
4285 | 4206 | ||
4286 | #: src/gns/gnunet-gns-proxy.c:901 | 4207 | #: src/gns/gnunet-gns-proxy.c:910 |
4287 | #, fuzzy, c-format | 4208 | #, fuzzy, c-format |
4288 | msgid "Failed to fetch CN from cert: %s\n" | 4209 | msgid "Failed to fetch CN from cert: %s\n" |
4289 | msgstr "Se produjo un fallo al mandar la petición DNS a %s\n" | 4210 | msgstr "Se produjo un fallo al mandar la petición DNS a %s\n" |
4290 | 4211 | ||
4291 | #: src/gns/gnunet-gns-proxy.c:924 | 4212 | #: src/gns/gnunet-gns-proxy.c:933 |
4292 | #, fuzzy, c-format | 4213 | #, fuzzy, c-format |
4293 | msgid "Failed to initialize DANE: %s\n" | 4214 | msgid "Failed to initialize DANE: %s\n" |
4294 | msgstr "¡No se puede inicializar el resolvedor!\n" | 4215 | msgstr "¡No se puede inicializar el resolvedor!\n" |
4295 | 4216 | ||
4296 | #: src/gns/gnunet-gns-proxy.c:937 | 4217 | #: src/gns/gnunet-gns-proxy.c:946 |
4297 | #, fuzzy, c-format | 4218 | #, fuzzy, c-format |
4298 | msgid "Failed to parse DANE record: %s\n" | 4219 | msgid "Failed to parse DANE record: %s\n" |
4299 | msgstr "Se produjo un fallo al procesar la petición DNS. Omitiendo.\n" | 4220 | msgstr "Se produjo un fallo al procesar la petición DNS. Omitiendo.\n" |
4300 | 4221 | ||
4301 | #: src/gns/gnunet-gns-proxy.c:952 | 4222 | #: src/gns/gnunet-gns-proxy.c:961 |
4302 | #, fuzzy, c-format | 4223 | #, fuzzy, c-format |
4303 | msgid "Failed to verify TLS connection using DANE: %s\n" | 4224 | msgid "Failed to verify TLS connection using DANE: %s\n" |
4304 | msgstr "Se produjo un fallo al borrar el fichero de configuración %s\n" | 4225 | msgstr "Se produjo un fallo al borrar el fichero de configuración %s\n" |
4305 | 4226 | ||
4306 | #: src/gns/gnunet-gns-proxy.c:962 | 4227 | #: src/gns/gnunet-gns-proxy.c:971 |
4307 | #, c-format | 4228 | #, c-format |
4308 | msgid "Failed DANE verification failed with GnuTLS verify status code: %u\n" | 4229 | msgid "Failed DANE verification failed with GnuTLS verify status code: %u\n" |
4309 | msgstr "" | 4230 | msgstr "" |
4310 | 4231 | ||
4311 | #: src/gns/gnunet-gns-proxy.c:986 | 4232 | #: src/gns/gnunet-gns-proxy.c:995 |
4312 | #, c-format | 4233 | #, c-format |
4313 | msgid "SSL certificate subject name (%s) does not match `%s'\n" | 4234 | msgid "SSL certificate subject name (%s) does not match `%s'\n" |
4314 | msgstr "" | 4235 | msgstr "" |
4315 | 4236 | ||
4316 | #: src/gns/gnunet-gns-proxy.c:1095 | 4237 | #: src/gns/gnunet-gns-proxy.c:1104 |
4317 | #, c-format | 4238 | #, c-format |
4318 | msgid "Cookie domain `%s' supplied by server is invalid\n" | 4239 | msgid "Cookie domain `%s' supplied by server is invalid\n" |
4319 | msgstr "" | 4240 | msgstr "" |
4320 | 4241 | ||
4321 | #: src/gns/gnunet-gns-proxy.c:1699 | 4242 | #: src/gns/gnunet-gns-proxy.c:1709 |
4322 | #, fuzzy, c-format | 4243 | #, fuzzy, c-format |
4323 | msgid "Unsupported HTTP method `%s'\n" | 4244 | msgid "Unsupported HTTP method `%s'\n" |
4324 | msgstr "Tipo no soportado «%s»\n" | 4245 | msgstr "Tipo no soportado «%s»\n" |
4325 | 4246 | ||
4326 | #: src/gns/gnunet-gns-proxy.c:2162 | 4247 | #: src/gns/gnunet-gns-proxy.c:2172 |
4327 | #, c-format | 4248 | #, c-format |
4328 | msgid "Unable to import private key from file `%s'\n" | 4249 | msgid "Unable to import private key from file `%s'\n" |
4329 | msgstr "No se pudo importar la clave privada del fichero «%s»\n" | 4250 | msgstr "No se pudo importar la clave privada del fichero «%s»\n" |
4330 | 4251 | ||
4331 | #: src/gns/gnunet-gns-proxy.c:2192 | 4252 | #: src/gns/gnunet-gns-proxy.c:2202 |
4332 | #, c-format | 4253 | #, c-format |
4333 | msgid "Unable to import certificate %s\n" | 4254 | msgid "Unable to import certificate %s\n" |
4334 | msgstr "No se pudo importar el certificado %s\n" | 4255 | msgstr "No se pudo importar el certificado %s\n" |
4335 | 4256 | ||
4336 | #: src/gns/gnunet-gns-proxy.c:2365 | 4257 | #: src/gns/gnunet-gns-proxy.c:2375 |
4337 | #, fuzzy, c-format | 4258 | #, fuzzy, c-format |
4338 | msgid "Failed to start HTTPS server for `%s'\n" | 4259 | msgid "Failed to start HTTPS server for `%s'\n" |
4339 | msgstr "Se produjo un fallo al iniciar el servidor HTTP\n" | 4260 | msgstr "Se produjo un fallo al iniciar el servidor HTTP\n" |
4340 | 4261 | ||
4341 | #: src/gns/gnunet-gns-proxy.c:2384 src/rest/gnunet-rest-server.c:533 | 4262 | #: src/gns/gnunet-gns-proxy.c:2394 src/rest/gnunet-rest-server.c:533 |
4342 | #, fuzzy | 4263 | #, fuzzy |
4343 | msgid "Failed to pass client to MHD\n" | 4264 | msgid "Failed to pass client to MHD\n" |
4344 | msgstr "Se produjo un fallo al conectar con GNS\n" | 4265 | msgstr "Se produjo un fallo al conectar con GNS\n" |
4345 | 4266 | ||
4346 | #: src/gns/gnunet-gns-proxy.c:2704 | 4267 | #: src/gns/gnunet-gns-proxy.c:2716 |
4347 | #, fuzzy, c-format | 4268 | #, fuzzy, c-format |
4348 | msgid "Unsupported socks version %d\n" | 4269 | msgid "Unsupported socks version %d\n" |
4349 | msgstr "Tipo de bloque %u no soportado\n" | 4270 | msgstr "Tipo de bloque %u no soportado\n" |
4350 | 4271 | ||
4351 | #: src/gns/gnunet-gns-proxy.c:2733 | 4272 | #: src/gns/gnunet-gns-proxy.c:2745 |
4352 | #, fuzzy, c-format | 4273 | #, fuzzy, c-format |
4353 | msgid "Unsupported socks command %d\n" | 4274 | msgid "Unsupported socks command %d\n" |
4354 | msgstr "Tipo de bloque %u no soportado\n" | 4275 | msgstr "Tipo de bloque %u no soportado\n" |
4355 | 4276 | ||
4356 | #: src/gns/gnunet-gns-proxy.c:2751 src/gns/gnunet-gns-proxy.c:2780 | 4277 | #: src/gns/gnunet-gns-proxy.c:2763 src/gns/gnunet-gns-proxy.c:2792 |
4357 | msgid "SSL connection to plain IPv4 address requested\n" | 4278 | msgid "SSL connection to plain IPv4 address requested\n" |
4358 | msgstr "" | 4279 | msgstr "" |
4359 | 4280 | ||
4360 | #: src/gns/gnunet-gns-proxy.c:2830 | 4281 | #: src/gns/gnunet-gns-proxy.c:2842 |
4361 | #, fuzzy, c-format | 4282 | #, fuzzy, c-format |
4362 | msgid "Unsupported socks address type %d\n" | 4283 | msgid "Unsupported socks address type %d\n" |
4363 | msgstr "Tipo de bloque %u no soportado\n" | 4284 | msgstr "Tipo de bloque %u no soportado\n" |
4364 | 4285 | ||
4365 | #: src/gns/gnunet-gns-proxy.c:3165 src/gns/gnunet-service-gns.c:403 | 4286 | #: src/gns/gnunet-gns-proxy.c:3177 src/gns/gnunet-service-gns.c:403 |
4366 | #, fuzzy, c-format | 4287 | #, fuzzy, c-format |
4367 | msgid "No ego configured for `%s`\n" | 4288 | msgid "No ego configured for `%s`\n" |
4368 | msgstr "" | 4289 | msgstr "" |
4369 | "Ningún puerto fue configurado para el módulo «%s», no se puede probar\n" | 4290 | "Ningún puerto fue configurado para el módulo «%s», no se puede probar\n" |
4370 | 4291 | ||
4371 | #: src/gns/gnunet-gns-proxy.c:3226 | 4292 | #: src/gns/gnunet-gns-proxy.c:3238 |
4372 | #, fuzzy, c-format | 4293 | #, fuzzy, c-format |
4373 | msgid "Failed to load SSL/TLS key and certificate from `%s'\n" | 4294 | msgid "Failed to load SSL/TLS key and certificate from `%s'\n" |
4374 | msgstr "Se produjo un fallo al leer la lista de amigos de «%s»\n" | 4295 | msgstr "Se produjo un fallo al leer la lista de amigos de «%s»\n" |
4375 | 4296 | ||
4376 | #: src/gns/gnunet-gns-proxy.c:3269 | 4297 | #: src/gns/gnunet-gns-proxy.c:3281 |
4377 | msgid "listen on specified port (default: 7777)" | 4298 | msgid "listen on specified port (default: 7777)" |
4378 | msgstr "escuchar en el puerto especificado (predeterminado: 7777)" | 4299 | msgstr "escuchar en el puerto especificado (predeterminado: 7777)" |
4379 | 4300 | ||
4380 | #: src/gns/gnunet-gns-proxy.c:3275 | 4301 | #: src/gns/gnunet-gns-proxy.c:3287 |
4381 | msgid "pem file to use as CA" | 4302 | msgid "pem file to use as CA" |
4382 | msgstr "fichero pem para usar como autoridad de certificación (CA)" | 4303 | msgstr "fichero pem para usar como autoridad de certificación (CA)" |
4383 | 4304 | ||
4384 | #: src/gns/gnunet-gns-proxy.c:3300 | 4305 | #: src/gns/gnunet-gns-proxy.c:3312 |
4385 | msgid "GNUnet GNS proxy" | 4306 | msgid "GNUnet GNS proxy" |
4386 | msgstr "Proxy GNUnet GNS" | 4307 | msgstr "Proxy GNUnet GNS" |
4387 | 4308 | ||
4388 | #: src/gns/gnunet-gns.c:235 src/gns/plugin_rest_gns.c:346 | ||
4389 | #, c-format | ||
4390 | msgid "Invalid typename specified, assuming `ANY'\n" | ||
4391 | msgstr "" | ||
4392 | |||
4393 | #: src/gns/gnunet-gns.c:252 | ||
4394 | #, c-format | ||
4395 | msgid "Please specify name to lookup!\n" | ||
4396 | msgstr "" | ||
4397 | |||
4398 | #: src/gns/gnunet-gns.c:276 | ||
4399 | #, c-format | ||
4400 | msgid "Ego for `%s' not found, cannot perform lookup.\n" | ||
4401 | msgstr "" | ||
4402 | |||
4403 | #: src/gns/gnunet-gns.c:374 | ||
4404 | #, c-format | ||
4405 | msgid "Public key `%s' is not well-formed\n" | ||
4406 | msgstr "" | ||
4407 | |||
4408 | #: src/gns/gnunet-gns.c:428 | ||
4409 | msgid "Lookup a record for the given name" | ||
4410 | msgstr "Buscar el registro para el nombre dado" | ||
4411 | |||
4412 | #: src/gns/gnunet-gns.c:434 | ||
4413 | msgid "Specify the type of the record to lookup" | ||
4414 | msgstr "Especificar el tipo del registro a buscar" | ||
4415 | |||
4416 | #: src/gns/gnunet-gns.c:440 | ||
4417 | #, fuzzy | ||
4418 | msgid "Specify timeout for the lookup" | ||
4419 | msgstr "Especificar el tipo del registro a buscar" | ||
4420 | |||
4421 | #: src/gns/gnunet-gns.c:445 | ||
4422 | msgid "No unneeded output" | ||
4423 | msgstr "Sin salida innecesaria" | ||
4424 | |||
4425 | #: src/gns/gnunet-gns.c:451 | ||
4426 | #, fuzzy | ||
4427 | msgid "Specify the public key of the zone to lookup the record in" | ||
4428 | msgstr "Especificar el tipo del registro a buscar" | ||
4429 | |||
4430 | #: src/gns/gnunet-gns.c:457 | ||
4431 | #, fuzzy | ||
4432 | msgid "Specify the name of the ego of the zone to lookup the record in" | ||
4433 | msgstr "Especificar el tipo del registro a buscar" | ||
4434 | |||
4435 | #: src/gns/gnunet-gns.c:476 | ||
4436 | #, fuzzy | ||
4437 | msgid "GNUnet GNS resolver tool" | ||
4438 | msgstr "Herramienta de acceso GNUnet GNS" | ||
4439 | |||
4440 | #: src/gns/gnunet-service-gns.c:442 | 4309 | #: src/gns/gnunet-service-gns.c:442 |
4441 | #, fuzzy | 4310 | #, fuzzy |
4442 | msgid "Failed to connect to the namecache!\n" | 4311 | msgid "Failed to connect to the namecache!\n" |
@@ -4501,37 +4370,47 @@ msgstr "" | |||
4501 | msgid "Hostname `%s' is not well-formed, resolution fails\n" | 4370 | msgid "Hostname `%s' is not well-formed, resolution fails\n" |
4502 | msgstr "" | 4371 | msgstr "" |
4503 | 4372 | ||
4504 | #: src/gns/plugin_gnsrecord_gns.c:179 | 4373 | #: src/gns/plugin_gnsrecord_gns.c:203 |
4505 | #, c-format | 4374 | #, c-format |
4506 | msgid "Unable to parse PKEY record `%s'\n" | 4375 | msgid "Unable to parse PKEY record `%s'\n" |
4507 | msgstr "No se pudo procesar el registro PKEY «%s»\n" | 4376 | msgstr "No se pudo procesar el registro PKEY «%s»\n" |
4508 | 4377 | ||
4509 | #: src/gns/plugin_gnsrecord_gns.c:208 | 4378 | #: src/gns/plugin_gnsrecord_gns.c:232 |
4510 | #, fuzzy, c-format | 4379 | #, fuzzy, c-format |
4511 | msgid "Unable to parse GNS2DNS record `%s'\n" | 4380 | msgid "Unable to parse GNS2DNS record `%s'\n" |
4512 | msgstr "No se pudo procesar el registro SOA «%s»\n" | 4381 | msgstr "No se pudo procesar el registro SOA «%s»\n" |
4513 | 4382 | ||
4514 | #: src/gns/plugin_gnsrecord_gns.c:229 | 4383 | #: src/gns/plugin_gnsrecord_gns.c:253 |
4515 | #, fuzzy, c-format | 4384 | #, fuzzy, c-format |
4516 | msgid "Failed to serialize GNS2DNS record with value `%s'\n" | 4385 | msgid "Failed to serialize GNS2DNS record with value `%s'\n" |
4517 | msgstr "" | 4386 | msgstr "" |
4518 | "Se produjo un fallo al escribir el directorio con los resultados de búsqueda " | 4387 | "Se produjo un fallo al escribir el directorio con los resultados de búsqueda " |
4519 | "de «%s»\n" | 4388 | "de «%s»\n" |
4520 | 4389 | ||
4521 | #: src/gns/plugin_gnsrecord_gns.c:252 | 4390 | #: src/gns/plugin_gnsrecord_gns.c:276 |
4522 | #, c-format | 4391 | #, c-format |
4523 | msgid "Unable to parse VPN record string `%s'\n" | 4392 | msgid "Unable to parse VPN record string `%s'\n" |
4524 | msgstr "No se pudo procesar la cadena de registro VPN «%s»\n" | 4393 | msgstr "No se pudo procesar la cadena de registro VPN «%s»\n" |
4525 | 4394 | ||
4526 | #: src/gns/plugin_gnsrecord_gns.c:288 | 4395 | #: src/gns/plugin_gnsrecord_gns.c:312 |
4527 | #, fuzzy, c-format | 4396 | #, fuzzy, c-format |
4528 | msgid "Unable to parse BOX record string `%s'\n" | 4397 | msgid "Unable to parse BOX record string `%s'\n" |
4529 | msgstr "No se pudo procesar la cadena de registro VPN «%s»\n" | 4398 | msgstr "No se pudo procesar la cadena de registro VPN «%s»\n" |
4530 | 4399 | ||
4400 | #: src/gns/plugin_gnsrecord_gns.c:360 | ||
4401 | #, fuzzy, c-format | ||
4402 | msgid "Unable to parse REVERSE record string `%s'\n" | ||
4403 | msgstr "No se pudo procesar la cadena de registro VPN «%s»\n" | ||
4404 | |||
4531 | #: src/gns/plugin_rest_gns.c:384 | 4405 | #: src/gns/plugin_rest_gns.c:384 |
4532 | msgid "Ego for not found, cannot perform lookup.\n" | 4406 | msgid "Ego for not found, cannot perform lookup.\n" |
4533 | msgstr "" | 4407 | msgstr "" |
4534 | 4408 | ||
4409 | #: src/gns/plugin_rest_gns.c:668 | ||
4410 | #, fuzzy | ||
4411 | msgid "GNS REST API initialized\n" | ||
4412 | msgstr "Conexión fallida\n" | ||
4413 | |||
4535 | #: src/gnsrecord/plugin_gnsrecord_dns.c:359 | 4414 | #: src/gnsrecord/plugin_gnsrecord_dns.c:359 |
4536 | #, c-format | 4415 | #, c-format |
4537 | msgid "Unable to parse IPv4 address `%s'\n" | 4416 | msgid "Unable to parse IPv4 address `%s'\n" |
@@ -4649,39 +4528,39 @@ msgstr "Error escribiendo «HELLO» al fichero «%s»: %s\n" | |||
4649 | msgid "Modified %u addresses, wrote %u bytes\n" | 4528 | msgid "Modified %u addresses, wrote %u bytes\n" |
4650 | msgstr "" | 4529 | msgstr "" |
4651 | 4530 | ||
4652 | #: src/hello/hello.c:1103 | 4531 | #: src/hello/hello.c:1110 |
4653 | msgid "Failed to parse HELLO message: missing expiration time\n" | 4532 | msgid "Failed to parse HELLO message: missing expiration time\n" |
4654 | msgstr "" | 4533 | msgstr "" |
4655 | "Se produjo un fallo al procesar un mensaje «HELLO»: falta el tiempo de " | 4534 | "Se produjo un fallo al procesar un mensaje «HELLO»: falta el tiempo de " |
4656 | "expiración\n" | 4535 | "expiración\n" |
4657 | 4536 | ||
4658 | #: src/hello/hello.c:1112 | 4537 | #: src/hello/hello.c:1119 |
4659 | msgid "Failed to parse HELLO message: invalid expiration time\n" | 4538 | msgid "Failed to parse HELLO message: invalid expiration time\n" |
4660 | msgstr "" | 4539 | msgstr "" |
4661 | "Se produjo un fallo al procesar un mensaje «HELLO»: tiempo de expiración no " | 4540 | "Se produjo un fallo al procesar un mensaje «HELLO»: tiempo de expiración no " |
4662 | "válido\n" | 4541 | "válido\n" |
4663 | 4542 | ||
4664 | #: src/hello/hello.c:1122 | 4543 | #: src/hello/hello.c:1129 |
4665 | msgid "Failed to parse HELLO message: malformed\n" | 4544 | msgid "Failed to parse HELLO message: malformed\n" |
4666 | msgstr "Se produjo un fallo al procesar un mensaje «HELLO»: mal formado\n" | 4545 | msgstr "Se produjo un fallo al procesar un mensaje «HELLO»: mal formado\n" |
4667 | 4546 | ||
4668 | #: src/hello/hello.c:1133 | 4547 | #: src/hello/hello.c:1140 |
4669 | msgid "Failed to parse HELLO message: missing transport plugin\n" | 4548 | msgid "Failed to parse HELLO message: missing transport plugin\n" |
4670 | msgstr "" | 4549 | msgstr "" |
4671 | "Se produjo un fallo al procesar un mensaje «HELLO»: falta el módulo de " | 4550 | "Se produjo un fallo al procesar un mensaje «HELLO»: falta el módulo de " |
4672 | "transporte\n" | 4551 | "transporte\n" |
4673 | 4552 | ||
4674 | #: src/hello/hello.c:1151 | 4553 | #: src/hello/hello.c:1158 |
4675 | #, fuzzy, c-format | 4554 | #, fuzzy, c-format |
4676 | msgid "Plugin `%s' not found, skipping address\n" | 4555 | msgid "Plugin `%s' not found, skipping address\n" |
4677 | msgstr "Módulo «%s» no encontrado\n" | 4556 | msgstr "Módulo «%s» no encontrado\n" |
4678 | 4557 | ||
4679 | #: src/hello/hello.c:1159 | 4558 | #: src/hello/hello.c:1166 |
4680 | #, c-format | 4559 | #, c-format |
4681 | msgid "Plugin `%s' does not support URIs yet\n" | 4560 | msgid "Plugin `%s' does not support URIs yet\n" |
4682 | msgstr "El módulo «%s» no soporta URI todavía\n" | 4561 | msgstr "El módulo «%s» no soporta URI todavía\n" |
4683 | 4562 | ||
4684 | #: src/hello/hello.c:1174 | 4563 | #: src/hello/hello.c:1181 |
4685 | #, c-format | 4564 | #, c-format |
4686 | msgid "Failed to parse `%s' as an address for plugin `%s'\n" | 4565 | msgid "Failed to parse `%s' as an address for plugin `%s'\n" |
4687 | msgstr "" | 4566 | msgstr "" |
@@ -4947,7 +4826,7 @@ msgid "# hostlist advertisements send" | |||
4947 | msgstr "# anuncios de listas de máquinas enviados" | 4826 | msgstr "# anuncios de listas de máquinas enviados" |
4948 | 4827 | ||
4949 | #: src/hostlist/gnunet-daemon-hostlist_server.c:679 | 4828 | #: src/hostlist/gnunet-daemon-hostlist_server.c:679 |
4950 | #: src/transport/gnunet-service-transport.c:2803 | 4829 | #: src/transport/gnunet-service-transport.c:2815 |
4951 | msgid "Could not access PEERINFO service. Exiting.\n" | 4830 | msgid "Could not access PEERINFO service. Exiting.\n" |
4952 | msgstr "" | 4831 | msgstr "" |
4953 | "No se pudo acceder al servicio de información de pares (PEERINFO). " | 4832 | "No se pudo acceder al servicio de información de pares (PEERINFO). " |
@@ -4994,53 +4873,6 @@ msgid "Could not start hostlist HTTP server on port %u\n" | |||
4994 | msgstr "" | 4873 | msgstr "" |
4995 | "No se pudo arrancar un servidor de listas de máquinas HTTP en el puerto %u\n" | 4874 | "No se pudo arrancar un servidor de listas de máquinas HTTP en el puerto %u\n" |
4996 | 4875 | ||
4997 | #: src/identity-provider/gnunet-idp.c:348 | ||
4998 | #, fuzzy | ||
4999 | msgid "Ego is required\n" | ||
5000 | msgstr "Las opción «%s» o «%s» es necesaria.\n" | ||
5001 | |||
5002 | #: src/identity-provider/gnunet-idp.c:370 | ||
5003 | msgid "Add attribute" | ||
5004 | msgstr "" | ||
5005 | |||
5006 | #: src/identity-provider/gnunet-idp.c:376 | ||
5007 | msgid "Attribute value" | ||
5008 | msgstr "" | ||
5009 | |||
5010 | #: src/identity-provider/gnunet-idp.c:381 | ||
5011 | msgid "Ego" | ||
5012 | msgstr "" | ||
5013 | |||
5014 | #: src/identity-provider/gnunet-idp.c:386 | ||
5015 | msgid "Audience (relying party)" | ||
5016 | msgstr "" | ||
5017 | |||
5018 | #: src/identity-provider/gnunet-idp.c:390 | ||
5019 | msgid "List attributes for Ego" | ||
5020 | msgstr "" | ||
5021 | |||
5022 | #: src/identity-provider/gnunet-idp.c:395 | ||
5023 | msgid "Issue a ticket" | ||
5024 | msgstr "" | ||
5025 | |||
5026 | #: src/identity-provider/gnunet-idp.c:400 | ||
5027 | msgid "Consume a ticket" | ||
5028 | msgstr "" | ||
5029 | |||
5030 | #: src/identity-provider/gnunet-idp.c:405 | ||
5031 | msgid "Revoke a ticket" | ||
5032 | msgstr "" | ||
5033 | |||
5034 | #: src/identity-provider/identity_provider_api.c:429 | ||
5035 | #, fuzzy | ||
5036 | msgid "failed to store record\n" | ||
5037 | msgstr "El almacén de nombres no pudo añadir el registro\n" | ||
5038 | |||
5039 | #: src/identity-provider/plugin_rest_identity_provider.c:1175 | ||
5040 | #, fuzzy | ||
5041 | msgid "Identity Provider REST API initialized\n" | ||
5042 | msgstr "Conexión fallida\n" | ||
5043 | |||
5044 | #: src/identity/gnunet-identity.c:179 | 4876 | #: src/identity/gnunet-identity.c:179 |
5045 | #, fuzzy, c-format | 4877 | #, fuzzy, c-format |
5046 | msgid "Failed to create ego: %s\n" | 4878 | msgid "Failed to create ego: %s\n" |
@@ -5135,11 +4967,34 @@ msgstr "Se produjo un fallo al borrar el fichero de configuración %s\n" | |||
5135 | msgid "Failed to create directory `%s' for storing egos\n" | 4967 | msgid "Failed to create directory `%s' for storing egos\n" |
5136 | msgstr "Se produjo un fallo al leer el directorio «%s»\n" | 4968 | msgstr "Se produjo un fallo al leer el directorio «%s»\n" |
5137 | 4969 | ||
5138 | #: src/identity/plugin_rest_identity.c:964 | 4970 | #: src/identity/plugin_rest_identity.c:967 |
5139 | #, fuzzy | 4971 | #, fuzzy |
5140 | msgid "Identity REST API initialized\n" | 4972 | msgid "Identity REST API initialized\n" |
5141 | msgstr "Conexión fallida\n" | 4973 | msgstr "Conexión fallida\n" |
5142 | 4974 | ||
4975 | #: src/identity-provider/gnunet-identity-token.c:66 | ||
4976 | #, fuzzy | ||
4977 | msgid "Option `-t' is required\n" | ||
4978 | msgstr "Las opción «%s» o «%s» es necesaria.\n" | ||
4979 | |||
4980 | #: src/identity-provider/gnunet-identity-token.c:77 | ||
4981 | #, fuzzy, c-format | ||
4982 | msgid "Token `%s' is malformed\n" | ||
4983 | msgstr "El bloque del tipo %u está mal formado\n" | ||
4984 | |||
4985 | #: src/identity-provider/gnunet-identity-token.c:166 | ||
4986 | msgid "GNUid token" | ||
4987 | msgstr "" | ||
4988 | |||
4989 | #: src/identity-provider/gnunet-identity-token.c:171 | ||
4990 | msgid "Print token contents" | ||
4991 | msgstr "" | ||
4992 | |||
4993 | #: src/identity-provider/plugin_rest_identity_provider.c:1166 | ||
4994 | #, fuzzy | ||
4995 | msgid "Identity Token REST API initialized\n" | ||
4996 | msgstr "Conexión fallida\n" | ||
4997 | |||
5143 | #: src/json/json.c:119 | 4998 | #: src/json/json.c:119 |
5144 | #, fuzzy, c-format | 4999 | #, fuzzy, c-format |
5145 | msgid "Failed to parse JSON in option `%s': %s (%s)\n" | 5000 | msgid "Failed to parse JSON in option `%s': %s (%s)\n" |
@@ -5242,80 +5097,19 @@ msgstr "Se produjo un fallo al crear los índices\n" | |||
5242 | msgid "flat plugin running\n" | 5097 | msgid "flat plugin running\n" |
5243 | msgstr "Base de datos sqlite ejecutándose\n" | 5098 | msgstr "Base de datos sqlite ejecutándose\n" |
5244 | 5099 | ||
5245 | # form?? | ||
5246 | #: src/namestore/gnunet-namestore-fcfsd.c:508 | ||
5247 | #, c-format | ||
5248 | msgid "Unsupported form value `%s'\n" | ||
5249 | msgstr "Forma de valor no soportada «%s»\n" | ||
5250 | |||
5251 | #: src/namestore/gnunet-namestore-fcfsd.c:535 | ||
5252 | #, c-format | ||
5253 | msgid "Failed to create record for domain `%s': %s\n" | ||
5254 | msgstr "Se produjo un fallo al crear un registro para el dominio «%s»: %s\n" | ||
5255 | |||
5256 | #: src/namestore/gnunet-namestore-fcfsd.c:555 | ||
5257 | msgid "Error when mapping zone to name\n" | ||
5258 | msgstr "" | ||
5259 | |||
5260 | #: src/namestore/gnunet-namestore-fcfsd.c:585 | ||
5261 | #, c-format | ||
5262 | msgid "Found existing name `%s' for the given key\n" | ||
5263 | msgstr "Encontrado nombre «%s» para la clave dada\n" | ||
5264 | |||
5265 | #: src/namestore/gnunet-namestore-fcfsd.c:662 | ||
5266 | #, c-format | ||
5267 | msgid "Found %u existing records for domain `%s'\n" | ||
5268 | msgstr "Encontrados %u registros para el dominio «%s»\n" | ||
5269 | |||
5270 | #: src/namestore/gnunet-namestore-fcfsd.c:718 | ||
5271 | #, c-format | ||
5272 | msgid "Failed to create page for `%s'\n" | ||
5273 | msgstr "Se produjo un fallo al crear la página para «%s»\n" | ||
5274 | |||
5275 | #: src/namestore/gnunet-namestore-fcfsd.c:734 | ||
5276 | #, c-format | ||
5277 | msgid "Failed to setup post processor for `%s'\n" | ||
5278 | msgstr "Se produjo un fallo al configurar el post-procesador para «%s»\n" | ||
5279 | |||
5280 | #: src/namestore/gnunet-namestore-fcfsd.c:770 | ||
5281 | msgid "Domain name must not contain `.'\n" | ||
5282 | msgstr "El nombre de dominio no puede contener «.»\n" | ||
5283 | |||
5284 | #: src/namestore/gnunet-namestore-fcfsd.c:778 | ||
5285 | msgid "Domain name must not contain `+'\n" | ||
5286 | msgstr "El nombre de dominio no puede contener «+»\n" | ||
5287 | |||
5288 | #: src/namestore/gnunet-namestore-fcfsd.c:974 | ||
5289 | msgid "No ego configured for `fcfsd` subsystem\n" | ||
5290 | msgstr "" | ||
5291 | |||
5292 | #: src/namestore/gnunet-namestore-fcfsd.c:1000 | ||
5293 | msgid "Failed to start HTTP server\n" | ||
5294 | msgstr "Se produjo un fallo al iniciar el servidor HTTP\n" | ||
5295 | |||
5296 | #: src/namestore/gnunet-namestore-fcfsd.c:1042 | ||
5297 | #, fuzzy | ||
5298 | msgid "Failed to connect to identity\n" | ||
5299 | msgstr "Se produjo un fallo al conectar con GNS\n" | ||
5300 | |||
5301 | #: src/namestore/gnunet-namestore-fcfsd.c:1074 | ||
5302 | #, fuzzy | ||
5303 | msgid "GNU Name System First Come First Serve name registration service" | ||
5304 | msgstr "Servicio de registro GNUnet GNS primero en llegar, primero en servirse" | ||
5305 | |||
5306 | #: src/namestore/gnunet-namestore.c:301 | 5100 | #: src/namestore/gnunet-namestore.c:301 |
5307 | #, c-format | 5101 | #, c-format |
5308 | msgid "Adding record failed: %s\n" | 5102 | msgid "Adding record failed: %s\n" |
5309 | msgstr "No se pudo añadir el registro: %s\n" | 5103 | msgstr "No se pudo añadir el registro: %s\n" |
5310 | 5104 | ||
5311 | #: src/namestore/gnunet-namestore.c:330 | 5105 | #: src/namestore/gnunet-namestore.c:330 |
5312 | #: src/namestore/plugin_rest_namestore.c:567 | 5106 | #: src/namestore/plugin_rest_namestore.c:562 |
5313 | #, fuzzy, c-format | 5107 | #, fuzzy, c-format |
5314 | msgid "Deleting record failed, record does not exist%s%s\n" | 5108 | msgid "Deleting record failed, record does not exist%s%s\n" |
5315 | msgstr "No se pudo borrar el registro: %s\n" | 5109 | msgstr "No se pudo borrar el registro: %s\n" |
5316 | 5110 | ||
5317 | #: src/namestore/gnunet-namestore.c:337 | 5111 | #: src/namestore/gnunet-namestore.c:337 |
5318 | #: src/namestore/plugin_rest_namestore.c:576 | 5112 | #: src/namestore/plugin_rest_namestore.c:571 |
5319 | #, fuzzy, c-format | 5113 | #, fuzzy, c-format |
5320 | msgid "Deleting record failed%s%s\n" | 5114 | msgid "Deleting record failed%s%s\n" |
5321 | msgstr "No se pudo borrar el registro: %s\n" | 5115 | msgstr "No se pudo borrar el registro: %s\n" |
@@ -5333,7 +5127,7 @@ msgid "Records already exist under `%s', cannot add `%s' record.\n" | |||
5333 | msgstr "" | 5127 | msgstr "" |
5334 | 5128 | ||
5335 | #: src/namestore/gnunet-namestore.c:698 | 5129 | #: src/namestore/gnunet-namestore.c:698 |
5336 | #: src/namestore/plugin_rest_namestore.c:602 | 5130 | #: src/namestore/plugin_rest_namestore.c:597 |
5337 | #, c-format | 5131 | #, c-format |
5338 | msgid "There are no records under label `%s' that could be deleted.\n" | 5132 | msgid "There are no records under label `%s' that could be deleted.\n" |
5339 | msgstr "" | 5133 | msgstr "" |
@@ -5344,11 +5138,23 @@ msgid "" | |||
5344 | "There are no records under label `%s' that match the request for deletion.\n" | 5138 | "There are no records under label `%s' that match the request for deletion.\n" |
5345 | msgstr "" | 5139 | msgstr "" |
5346 | 5140 | ||
5141 | #: src/namestore/gnunet-namestore.c:776 | ||
5142 | #: src/namestore/plugin_rest_namestore.c:1004 | ||
5143 | #, fuzzy, c-format | ||
5144 | msgid "Ego `%s' not known to identity service\n" | ||
5145 | msgstr "'%s': servicio desconocido: %s\n" | ||
5146 | |||
5347 | #: src/namestore/gnunet-namestore.c:791 | 5147 | #: src/namestore/gnunet-namestore.c:791 |
5348 | #, c-format | 5148 | #, c-format |
5349 | msgid "No options given\n" | 5149 | msgid "No options given\n" |
5350 | msgstr "No se han proporcionado opciones\n" | 5150 | msgstr "No se han proporcionado opciones\n" |
5351 | 5151 | ||
5152 | #: src/namestore/gnunet-namestore.c:802 | ||
5153 | #: src/namestore/gnunet-namestore-fcfsd.c:1034 | ||
5154 | #: src/namestore/plugin_rest_namestore.c:1017 | ||
5155 | msgid "Failed to connect to namestore\n" | ||
5156 | msgstr "Se produjo un fallo al conectar con el almacén de nombres\n" | ||
5157 | |||
5352 | #: src/namestore/gnunet-namestore.c:810 src/namestore/gnunet-namestore.c:819 | 5158 | #: src/namestore/gnunet-namestore.c:810 src/namestore/gnunet-namestore.c:819 |
5353 | #: src/namestore/gnunet-namestore.c:838 src/namestore/gnunet-namestore.c:861 | 5159 | #: src/namestore/gnunet-namestore.c:838 src/namestore/gnunet-namestore.c:861 |
5354 | #: src/namestore/gnunet-namestore.c:915 | 5160 | #: src/namestore/gnunet-namestore.c:915 |
@@ -5362,14 +5168,14 @@ msgid "add" | |||
5362 | msgstr "añadir" | 5168 | msgstr "añadir" |
5363 | 5169 | ||
5364 | #: src/namestore/gnunet-namestore.c:829 | 5170 | #: src/namestore/gnunet-namestore.c:829 |
5365 | #: src/namestore/plugin_rest_namestore.c:676 | 5171 | #: src/namestore/plugin_rest_namestore.c:671 |
5366 | #, c-format | 5172 | #, c-format |
5367 | msgid "Unsupported type `%s'\n" | 5173 | msgid "Unsupported type `%s'\n" |
5368 | msgstr "Tipo no soportado «%s»\n" | 5174 | msgstr "Tipo no soportado «%s»\n" |
5369 | 5175 | ||
5370 | #: src/namestore/gnunet-namestore.c:851 | 5176 | #: src/namestore/gnunet-namestore.c:851 |
5371 | #: src/namestore/plugin_rest_namestore.c:694 | 5177 | #: src/namestore/plugin_rest_namestore.c:689 |
5372 | #: src/namestore/plugin_rest_namestore.c:734 | 5178 | #: src/namestore/plugin_rest_namestore.c:729 |
5373 | #, c-format | 5179 | #, c-format |
5374 | msgid "Value `%s' invalid for record type `%s'\n" | 5180 | msgid "Value `%s' invalid for record type `%s'\n" |
5375 | msgstr "Valor «%s» no válido para el tipo de registro «%s»\n" | 5181 | msgstr "Valor «%s» no válido para el tipo de registro «%s»\n" |
@@ -5399,13 +5205,13 @@ msgid "Invalid nick `%s'\n" | |||
5399 | msgstr "URI no válida: «%s»\n" | 5205 | msgstr "URI no válida: «%s»\n" |
5400 | 5206 | ||
5401 | #: src/namestore/gnunet-namestore.c:1051 | 5207 | #: src/namestore/gnunet-namestore.c:1051 |
5402 | #: src/namestore/plugin_rest_namestore.c:1052 | 5208 | #: src/namestore/plugin_rest_namestore.c:1047 |
5403 | #, fuzzy, c-format | 5209 | #, fuzzy, c-format |
5404 | msgid "No default ego configured in identity service\n" | 5210 | msgid "No default ego configured in identity service\n" |
5405 | msgstr "'%s': servicio desconocido: %s\n" | 5211 | msgstr "'%s': servicio desconocido: %s\n" |
5406 | 5212 | ||
5407 | #: src/namestore/gnunet-namestore.c:1108 | 5213 | #: src/namestore/gnunet-namestore.c:1108 |
5408 | #: src/namestore/plugin_rest_namestore.c:1148 | 5214 | #: src/namestore/plugin_rest_namestore.c:1143 |
5409 | #, fuzzy, c-format | 5215 | #, fuzzy, c-format |
5410 | msgid "Cannot connect to identity service\n" | 5216 | msgid "Cannot connect to identity service\n" |
5411 | msgstr "¡No se pudo conectar al servicio %s!\n" | 5217 | msgstr "¡No se pudo conectar al servicio %s!\n" |
@@ -5471,6 +5277,67 @@ msgstr "" | |||
5471 | msgid "name of the ego controlling the zone" | 5277 | msgid "name of the ego controlling the zone" |
5472 | msgstr "nombre de la sección a la que acceder" | 5278 | msgstr "nombre de la sección a la que acceder" |
5473 | 5279 | ||
5280 | # form?? | ||
5281 | #: src/namestore/gnunet-namestore-fcfsd.c:508 | ||
5282 | #, c-format | ||
5283 | msgid "Unsupported form value `%s'\n" | ||
5284 | msgstr "Forma de valor no soportada «%s»\n" | ||
5285 | |||
5286 | #: src/namestore/gnunet-namestore-fcfsd.c:535 | ||
5287 | #, c-format | ||
5288 | msgid "Failed to create record for domain `%s': %s\n" | ||
5289 | msgstr "Se produjo un fallo al crear un registro para el dominio «%s»: %s\n" | ||
5290 | |||
5291 | #: src/namestore/gnunet-namestore-fcfsd.c:555 | ||
5292 | msgid "Error when mapping zone to name\n" | ||
5293 | msgstr "" | ||
5294 | |||
5295 | #: src/namestore/gnunet-namestore-fcfsd.c:585 | ||
5296 | #, c-format | ||
5297 | msgid "Found existing name `%s' for the given key\n" | ||
5298 | msgstr "Encontrado nombre «%s» para la clave dada\n" | ||
5299 | |||
5300 | #: src/namestore/gnunet-namestore-fcfsd.c:662 | ||
5301 | #, c-format | ||
5302 | msgid "Found %u existing records for domain `%s'\n" | ||
5303 | msgstr "Encontrados %u registros para el dominio «%s»\n" | ||
5304 | |||
5305 | #: src/namestore/gnunet-namestore-fcfsd.c:718 | ||
5306 | #, c-format | ||
5307 | msgid "Failed to create page for `%s'\n" | ||
5308 | msgstr "Se produjo un fallo al crear la página para «%s»\n" | ||
5309 | |||
5310 | #: src/namestore/gnunet-namestore-fcfsd.c:734 | ||
5311 | #, c-format | ||
5312 | msgid "Failed to setup post processor for `%s'\n" | ||
5313 | msgstr "Se produjo un fallo al configurar el post-procesador para «%s»\n" | ||
5314 | |||
5315 | #: src/namestore/gnunet-namestore-fcfsd.c:770 | ||
5316 | msgid "Domain name must not contain `.'\n" | ||
5317 | msgstr "El nombre de dominio no puede contener «.»\n" | ||
5318 | |||
5319 | #: src/namestore/gnunet-namestore-fcfsd.c:778 | ||
5320 | msgid "Domain name must not contain `+'\n" | ||
5321 | msgstr "El nombre de dominio no puede contener «+»\n" | ||
5322 | |||
5323 | #: src/namestore/gnunet-namestore-fcfsd.c:974 | ||
5324 | msgid "No ego configured for `fcfsd` subsystem\n" | ||
5325 | msgstr "" | ||
5326 | |||
5327 | #: src/namestore/gnunet-namestore-fcfsd.c:1000 | ||
5328 | msgid "Failed to start HTTP server\n" | ||
5329 | msgstr "Se produjo un fallo al iniciar el servidor HTTP\n" | ||
5330 | |||
5331 | #: src/namestore/gnunet-namestore-fcfsd.c:1042 | ||
5332 | #, fuzzy | ||
5333 | msgid "Failed to connect to identity\n" | ||
5334 | msgstr "Se produjo un fallo al conectar con GNS\n" | ||
5335 | |||
5336 | #: src/namestore/gnunet-namestore-fcfsd.c:1074 | ||
5337 | #, fuzzy | ||
5338 | msgid "GNU Name System First Come First Serve name registration service" | ||
5339 | msgstr "Servicio de registro GNUnet GNS primero en llegar, primero en servirse" | ||
5340 | |||
5474 | #: src/namestore/gnunet-service-namestore.c:615 | 5341 | #: src/namestore/gnunet-service-namestore.c:615 |
5475 | #, fuzzy, c-format | 5342 | #, fuzzy, c-format |
5476 | msgid "Failed to replicate block in namecache: %s\n" | 5343 | msgid "Failed to replicate block in namecache: %s\n" |
@@ -5486,7 +5353,7 @@ msgstr "El almacén de nombres no pudo añadir el registro\n" | |||
5486 | msgid "flat file database running\n" | 5353 | msgid "flat file database running\n" |
5487 | msgstr "Base de datos de plantilla ejecutándose\n" | 5354 | msgstr "Base de datos de plantilla ejecutándose\n" |
5488 | 5355 | ||
5489 | #: src/namestore/plugin_rest_namestore.c:1193 | 5356 | #: src/namestore/plugin_rest_namestore.c:1188 |
5490 | #, fuzzy | 5357 | #, fuzzy |
5491 | msgid "Namestore REST API initialized\n" | 5358 | msgid "Namestore REST API initialized\n" |
5492 | msgstr "Conexión fallida\n" | 5359 | msgstr "Conexión fallida\n" |
@@ -5786,6 +5653,11 @@ msgstr "comando «external-ip» no encontrado\n" | |||
5786 | msgid "`upnpc' command not found\n" | 5653 | msgid "`upnpc' command not found\n" |
5787 | msgstr "comando «upnpc» no encontrado\n" | 5654 | msgstr "comando «upnpc» no encontrado\n" |
5788 | 5655 | ||
5656 | #: src/nse/gnunet-nse.c:122 | ||
5657 | #, fuzzy | ||
5658 | msgid "Show network size estimates from NSE service." | ||
5659 | msgstr "# Estimaciones del tamaño de red recibidas" | ||
5660 | |||
5789 | #: src/nse/gnunet-nse-profiler.c:842 | 5661 | #: src/nse/gnunet-nse-profiler.c:842 |
5790 | msgid "limit to the number of connections to NSE services, 0 for none" | 5662 | msgid "limit to the number of connections to NSE services, 0 for none" |
5791 | msgstr "límite al número de conexiones a servicios NSE, 0 para ilimitadas" | 5663 | msgstr "límite al número de conexiones a servicios NSE, 0 para ilimitadas" |
@@ -5811,16 +5683,70 @@ msgstr "retraso entre rondas" | |||
5811 | msgid "Measure quality and performance of the NSE service." | 5683 | msgid "Measure quality and performance of the NSE service." |
5812 | msgstr "Medir la calidad y rendimiento del servicio NSE." | 5684 | msgstr "Medir la calidad y rendimiento del servicio NSE." |
5813 | 5685 | ||
5814 | #: src/nse/gnunet-nse.c:122 | ||
5815 | #, fuzzy | ||
5816 | msgid "Show network size estimates from NSE service." | ||
5817 | msgstr "# Estimaciones del tamaño de red recibidas" | ||
5818 | |||
5819 | #: src/nse/gnunet-service-nse.c:1534 | 5686 | #: src/nse/gnunet-service-nse.c:1534 |
5820 | #: src/revocation/gnunet-service-revocation.c:838 src/util/gnunet-scrypt.c:276 | 5687 | #: src/revocation/gnunet-service-revocation.c:840 src/util/gnunet-scrypt.c:276 |
5821 | msgid "Value is too large.\n" | 5688 | msgid "Value is too large.\n" |
5822 | msgstr "" | 5689 | msgstr "" |
5823 | 5690 | ||
5691 | #: src/peerinfo/gnunet-service-peerinfo.c:178 | ||
5692 | #, c-format | ||
5693 | msgid "Removing expired address of transport `%s'\n" | ||
5694 | msgstr "Eliminando dirección de transporte «%s»\n" | ||
5695 | |||
5696 | #: src/peerinfo/gnunet-service-peerinfo.c:310 | ||
5697 | #, fuzzy, c-format | ||
5698 | msgid "Failed to parse HELLO in file `%s': %s\n" | ||
5699 | msgstr "Se produjo un fallo al procesar «HELLO» en el fichero «%s»\n" | ||
5700 | |||
5701 | #: src/peerinfo/gnunet-service-peerinfo.c:331 | ||
5702 | #: src/peerinfo/gnunet-service-peerinfo.c:362 | ||
5703 | #, fuzzy, c-format | ||
5704 | msgid "Failed to parse HELLO in file `%s'\n" | ||
5705 | msgstr "Se produjo un fallo al procesar «HELLO» en el fichero «%s»\n" | ||
5706 | |||
5707 | #: src/peerinfo/gnunet-service-peerinfo.c:446 | ||
5708 | msgid "# peers known" | ||
5709 | msgstr "# pares conocidos" | ||
5710 | |||
5711 | #: src/peerinfo/gnunet-service-peerinfo.c:489 | ||
5712 | #, c-format | ||
5713 | msgid "" | ||
5714 | "File `%s' in directory `%s' does not match naming convention. Removed.\n" | ||
5715 | msgstr "" | ||
5716 | "El fichero «%s» en el directorio «%s» no sigue la convención de nombres. " | ||
5717 | "Eliminado.\n" | ||
5718 | |||
5719 | #: src/peerinfo/gnunet-service-peerinfo.c:655 | ||
5720 | #, fuzzy, c-format | ||
5721 | msgid "Scanning directory `%s'\n" | ||
5722 | msgstr "Escaneando directorio «%s».\n" | ||
5723 | |||
5724 | #: src/peerinfo/gnunet-service-peerinfo.c:663 | ||
5725 | #, c-format | ||
5726 | msgid "Still no peers found in `%s'!\n" | ||
5727 | msgstr "¡Aún no se han encontrado pares en «%s»!\n" | ||
5728 | |||
5729 | #: src/peerinfo/gnunet-service-peerinfo.c:1080 | ||
5730 | #, fuzzy, c-format | ||
5731 | msgid "Cleaning up directory `%s'\n" | ||
5732 | msgstr "Escaneando directorio «%s».\n" | ||
5733 | |||
5734 | #: src/peerinfo/gnunet-service-peerinfo.c:1409 | ||
5735 | #, c-format | ||
5736 | msgid "Importing HELLOs from `%s'\n" | ||
5737 | msgstr "Importando HELLO de «%s»\n" | ||
5738 | |||
5739 | #: src/peerinfo/gnunet-service-peerinfo.c:1422 | ||
5740 | msgid "Skipping import of included HELLOs\n" | ||
5741 | msgstr "" | ||
5742 | |||
5743 | # Miguel: "Failed to receive" también aquí está traducido como | ||
5744 | # "no se obtuvo respuesta" por claridad. | ||
5745 | #: src/peerinfo/peerinfo_api.c:220 | ||
5746 | msgid "Failed to receive response from `PEERINFO' service." | ||
5747 | msgstr "" | ||
5748 | "No se obtuvo respuesta del servicio de información de pares (PEERINFO)." | ||
5749 | |||
5824 | #: src/peerinfo-tool/gnunet-peerinfo.c:239 | 5750 | #: src/peerinfo-tool/gnunet-peerinfo.c:239 |
5825 | #, fuzzy, c-format | 5751 | #, fuzzy, c-format |
5826 | msgid "%sPeer `%s'\n" | 5752 | msgid "%sPeer `%s'\n" |
@@ -5910,65 +5836,6 @@ msgstr "Cargando el módulo de transporte «%s»\n" | |||
5910 | msgid "Failed to load transport plugin for `%s'\n" | 5836 | msgid "Failed to load transport plugin for `%s'\n" |
5911 | msgstr "Se produjo un fallo al cargar el módulo del transporte para «%s»\n" | 5837 | msgstr "Se produjo un fallo al cargar el módulo del transporte para «%s»\n" |
5912 | 5838 | ||
5913 | #: src/peerinfo/gnunet-service-peerinfo.c:178 | ||
5914 | #, c-format | ||
5915 | msgid "Removing expired address of transport `%s'\n" | ||
5916 | msgstr "Eliminando dirección de transporte «%s»\n" | ||
5917 | |||
5918 | #: src/peerinfo/gnunet-service-peerinfo.c:310 | ||
5919 | #, fuzzy, c-format | ||
5920 | msgid "Failed to parse HELLO in file `%s': %s\n" | ||
5921 | msgstr "Se produjo un fallo al procesar «HELLO» en el fichero «%s»\n" | ||
5922 | |||
5923 | #: src/peerinfo/gnunet-service-peerinfo.c:331 | ||
5924 | #: src/peerinfo/gnunet-service-peerinfo.c:362 | ||
5925 | #, fuzzy, c-format | ||
5926 | msgid "Failed to parse HELLO in file `%s'\n" | ||
5927 | msgstr "Se produjo un fallo al procesar «HELLO» en el fichero «%s»\n" | ||
5928 | |||
5929 | #: src/peerinfo/gnunet-service-peerinfo.c:446 | ||
5930 | msgid "# peers known" | ||
5931 | msgstr "# pares conocidos" | ||
5932 | |||
5933 | #: src/peerinfo/gnunet-service-peerinfo.c:489 | ||
5934 | #, c-format | ||
5935 | msgid "" | ||
5936 | "File `%s' in directory `%s' does not match naming convention. Removed.\n" | ||
5937 | msgstr "" | ||
5938 | "El fichero «%s» en el directorio «%s» no sigue la convención de nombres. " | ||
5939 | "Eliminado.\n" | ||
5940 | |||
5941 | #: src/peerinfo/gnunet-service-peerinfo.c:655 | ||
5942 | #, fuzzy, c-format | ||
5943 | msgid "Scanning directory `%s'\n" | ||
5944 | msgstr "Escaneando directorio «%s».\n" | ||
5945 | |||
5946 | #: src/peerinfo/gnunet-service-peerinfo.c:663 | ||
5947 | #, c-format | ||
5948 | msgid "Still no peers found in `%s'!\n" | ||
5949 | msgstr "¡Aún no se han encontrado pares en «%s»!\n" | ||
5950 | |||
5951 | #: src/peerinfo/gnunet-service-peerinfo.c:1076 | ||
5952 | #, fuzzy, c-format | ||
5953 | msgid "Cleaning up directory `%s'\n" | ||
5954 | msgstr "Escaneando directorio «%s».\n" | ||
5955 | |||
5956 | #: src/peerinfo/gnunet-service-peerinfo.c:1405 | ||
5957 | #, c-format | ||
5958 | msgid "Importing HELLOs from `%s'\n" | ||
5959 | msgstr "Importando HELLO de «%s»\n" | ||
5960 | |||
5961 | #: src/peerinfo/gnunet-service-peerinfo.c:1418 | ||
5962 | msgid "Skipping import of included HELLOs\n" | ||
5963 | msgstr "" | ||
5964 | |||
5965 | # Miguel: "Failed to receive" también aquí está traducido como | ||
5966 | # "no se obtuvo respuesta" por claridad. | ||
5967 | #: src/peerinfo/peerinfo_api.c:220 | ||
5968 | msgid "Failed to receive response from `PEERINFO' service." | ||
5969 | msgstr "" | ||
5970 | "No se obtuvo respuesta del servicio de información de pares (PEERINFO)." | ||
5971 | |||
5972 | #: src/peerstore/gnunet-peerstore.c:91 | 5839 | #: src/peerstore/gnunet-peerstore.c:91 |
5973 | msgid "peerstore" | 5840 | msgid "peerstore" |
5974 | msgstr "" | 5841 | msgstr "" |
@@ -6422,12 +6289,12 @@ msgstr "# sesiones wlan creadas" | |||
6422 | msgid "# revocation set unions completed" | 6289 | msgid "# revocation set unions completed" |
6423 | msgstr "# transmisiones de fragmentos completadas" | 6290 | msgstr "# transmisiones de fragmentos completadas" |
6424 | 6291 | ||
6425 | #: src/revocation/gnunet-service-revocation.c:524 | 6292 | #: src/revocation/gnunet-service-revocation.c:525 |
6426 | #: src/revocation/gnunet-service-revocation.c:771 | 6293 | #: src/revocation/gnunet-service-revocation.c:773 |
6427 | msgid "SET service crashed, terminating revocation service\n" | 6294 | msgid "SET service crashed, terminating revocation service\n" |
6428 | msgstr "" | 6295 | msgstr "" |
6429 | 6296 | ||
6430 | #: src/revocation/gnunet-service-revocation.c:862 | 6297 | #: src/revocation/gnunet-service-revocation.c:864 |
6431 | #, fuzzy | 6298 | #, fuzzy |
6432 | msgid "Could not open revocation database file!" | 6299 | msgid "Could not open revocation database file!" |
6433 | msgstr "No se pudo conectar con el almacén de datos." | 6300 | msgstr "No se pudo conectar con el almacén de datos." |
@@ -6491,10 +6358,10 @@ msgstr "" | |||
6491 | msgid "Calculate the Vectorproduct with a GNUnet peer." | 6358 | msgid "Calculate the Vectorproduct with a GNUnet peer." |
6492 | msgstr "" | 6359 | msgstr "" |
6493 | 6360 | ||
6494 | #: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1172 | ||
6495 | #: src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c:1063 | ||
6496 | #: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1401 | 6361 | #: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1401 |
6497 | #: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1345 | 6362 | #: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1345 |
6363 | #: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1172 | ||
6364 | #: src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c:1063 | ||
6498 | #, fuzzy | 6365 | #, fuzzy |
6499 | msgid "Connect to CADET failed\n" | 6366 | msgid "Connect to CADET failed\n" |
6500 | msgstr "Conexión fallida (¿bug?)\n" | 6367 | msgstr "Conexión fallida (¿bug?)\n" |
@@ -6714,7 +6581,7 @@ msgstr "«%s» falló al resolver el método «%s» con error: %s\n" | |||
6714 | msgid "Wrote %llu bytes of statistics to `%s'\n" | 6581 | msgid "Wrote %llu bytes of statistics to `%s'\n" |
6715 | msgstr "Escritos %llu bytes de estadísticas a «%s»\n" | 6582 | msgstr "Escritos %llu bytes de estadísticas a «%s»\n" |
6716 | 6583 | ||
6717 | #: src/statistics/gnunet-service-statistics.c:1084 | 6584 | #: src/statistics/gnunet-service-statistics.c:1086 |
6718 | #, c-format | 6585 | #, c-format |
6719 | msgid "Loading %llu bytes of statistics from `%s'\n" | 6586 | msgid "Loading %llu bytes of statistics from `%s'\n" |
6720 | msgstr "Cargando %llu bytes de estadísticas de «%s»\n" | 6587 | msgstr "Cargando %llu bytes de estadísticas de «%s»\n" |
@@ -6843,7 +6710,7 @@ msgid "Invalid argument `%s'; expecting unsigned int\n" | |||
6843 | msgstr "Argumento no válido para '%s' en %s:%d.\n" | 6710 | msgstr "Argumento no válido para '%s' en %s:%d.\n" |
6844 | 6711 | ||
6845 | #: src/testbed/generate-underlay-topology.c:342 | 6712 | #: src/testbed/generate-underlay-topology.c:342 |
6846 | #: src/testbed/gnunet-testbed-profiler.c:284 | 6713 | #: src/testbed/gnunet-testbed-profiler.c:283 |
6847 | msgid "create COUNT number of peers" | 6714 | msgid "create COUNT number of peers" |
6848 | msgstr "crea «COUNT» número de pares" | 6715 | msgstr "crea «COUNT» número de pares" |
6849 | 6716 | ||
@@ -6881,13 +6748,13 @@ msgid "" | |||
6881 | "deployments" | 6748 | "deployments" |
6882 | msgstr "" | 6749 | msgstr "" |
6883 | 6750 | ||
6884 | #: src/testbed/gnunet-daemon-testbed-underlay.c:231 src/testing/list-keys.c:46 | 6751 | #: src/testbed/gnunet-daemon-testbed-underlay.c:233 src/testing/list-keys.c:46 |
6885 | #: src/testing/testing.c:288 src/util/gnunet-ecc.c:301 | 6752 | #: src/testing/testing.c:288 src/util/gnunet-ecc.c:306 |
6886 | #, c-format | 6753 | #, c-format |
6887 | msgid "Incorrect hostkey file format: %s\n" | 6754 | msgid "Incorrect hostkey file format: %s\n" |
6888 | msgstr "El fichero de máquinas no tiene el formato correcto: %s\n" | 6755 | msgstr "El fichero de máquinas no tiene el formato correcto: %s\n" |
6889 | 6756 | ||
6890 | #: src/testbed/gnunet-daemon-testbed-underlay.c:469 | 6757 | #: src/testbed/gnunet-daemon-testbed-underlay.c:471 |
6891 | msgid "Daemon to restrict underlay network in testbed deployments" | 6758 | msgid "Daemon to restrict underlay network in testbed deployments" |
6892 | msgstr "" | 6759 | msgstr "" |
6893 | 6760 | ||
@@ -6956,17 +6823,6 @@ msgstr "Petición ignorada porque el ARM se está apagando.\n" | |||
6956 | msgid "%.s Unknown result code." | 6823 | msgid "%.s Unknown result code." |
6957 | msgstr "Código de respuesta del ARM desconocido.\n" | 6824 | msgstr "Código de respuesta del ARM desconocido.\n" |
6958 | 6825 | ||
6959 | #: src/testbed/gnunet-testbed-profiler.c:290 | ||
6960 | msgid "tolerate COUNT number of continious timeout failures" | ||
6961 | msgstr "tolerar un número «COUNT» de continuas expiraciones de plazo" | ||
6962 | |||
6963 | #: src/testbed/gnunet-testbed-profiler.c:295 | ||
6964 | msgid "" | ||
6965 | "run profiler in non-interactive mode where upon testbed setup the profiler " | ||
6966 | "does not wait for a keystroke but continues to run until a termination " | ||
6967 | "signal is received" | ||
6968 | msgstr "" | ||
6969 | |||
6970 | #: src/testbed/gnunet_testbed_mpi_spawn.c:118 | 6826 | #: src/testbed/gnunet_testbed_mpi_spawn.c:118 |
6971 | #, fuzzy | 6827 | #, fuzzy |
6972 | msgid "Waiting for child to exit.\n" | 6828 | msgid "Waiting for child to exit.\n" |
@@ -6977,6 +6833,17 @@ msgstr "Esperando a los pares para conectar (%u ciclos restantes)...\n" | |||
6977 | msgid "Spawning process `%s'\n" | 6833 | msgid "Spawning process `%s'\n" |
6978 | msgstr "Iniciando el proceso auxiliar (HELPER) «%s»\n" | 6834 | msgstr "Iniciando el proceso auxiliar (HELPER) «%s»\n" |
6979 | 6835 | ||
6836 | #: src/testbed/gnunet-testbed-profiler.c:289 | ||
6837 | msgid "tolerate COUNT number of continious timeout failures" | ||
6838 | msgstr "tolerar un número «COUNT» de continuas expiraciones de plazo" | ||
6839 | |||
6840 | #: src/testbed/gnunet-testbed-profiler.c:294 | ||
6841 | msgid "" | ||
6842 | "run profiler in non-interactive mode where upon testbed setup the profiler " | ||
6843 | "does not wait for a keystroke but continues to run until a termination " | ||
6844 | "signal is received" | ||
6845 | msgstr "" | ||
6846 | |||
6980 | #: src/testbed/testbed_api.c:410 | 6847 | #: src/testbed/testbed_api.c:410 |
6981 | #, c-format | 6848 | #, c-format |
6982 | msgid "Adding host %u failed with error: %s\n" | 6849 | msgid "Adding host %u failed with error: %s\n" |
@@ -7297,58 +7164,58 @@ msgstr "# mensajes «HELLO» recibidos" | |||
7297 | msgid "GNUnet topology control" | 7164 | msgid "GNUnet topology control" |
7298 | msgstr "" | 7165 | msgstr "" |
7299 | 7166 | ||
7167 | #: src/transport/gnunet-service-transport_ats.c:141 | ||
7168 | msgid "# Addresses given to ATS" | ||
7169 | msgstr "" | ||
7170 | |||
7300 | #: src/transport/gnunet-service-transport.c:448 | 7171 | #: src/transport/gnunet-service-transport.c:448 |
7301 | msgid "# messages dropped due to slow client" | 7172 | msgid "# messages dropped due to slow client" |
7302 | msgstr "# mensajes omitidos debido a un cliente lento" | 7173 | msgstr "# mensajes omitidos debido a un cliente lento" |
7303 | 7174 | ||
7304 | #: src/transport/gnunet-service-transport.c:809 | 7175 | #: src/transport/gnunet-service-transport.c:818 |
7305 | msgid "# bytes payload dropped (other peer was not connected)" | 7176 | msgid "# bytes payload dropped (other peer was not connected)" |
7306 | msgstr "# bytes de «payload» omitidos (el otro par no estaba conectado)" | 7177 | msgstr "# bytes de «payload» omitidos (el otro par no estaba conectado)" |
7307 | 7178 | ||
7308 | #: src/transport/gnunet-service-transport.c:1539 | 7179 | #: src/transport/gnunet-service-transport.c:1551 |
7309 | #, fuzzy | 7180 | #, fuzzy |
7310 | msgid "# bytes payload discarded due to not connected peer" | 7181 | msgid "# bytes payload discarded due to not connected peer" |
7311 | msgstr "# bytes de «payload» descartados debido a par no conectado" | 7182 | msgstr "# bytes de «payload» descartados debido a par no conectado" |
7312 | 7183 | ||
7313 | #: src/transport/gnunet-service-transport.c:1699 | 7184 | #: src/transport/gnunet-service-transport.c:1711 |
7314 | msgid "# bytes total received" | 7185 | msgid "# bytes total received" |
7315 | msgstr "# total de bytes recibidos" | 7186 | msgstr "# total de bytes recibidos" |
7316 | 7187 | ||
7317 | #: src/transport/gnunet-service-transport.c:1796 | 7188 | #: src/transport/gnunet-service-transport.c:1808 |
7318 | msgid "# bytes payload received" | 7189 | msgid "# bytes payload received" |
7319 | msgstr "# bytes de «payload» recibidos" | 7190 | msgstr "# bytes de «payload» recibidos" |
7320 | 7191 | ||
7321 | #: src/transport/gnunet-service-transport.c:2113 | 7192 | #: src/transport/gnunet-service-transport.c:2125 |
7322 | #: src/transport/gnunet-service-transport.c:2585 | 7193 | #: src/transport/gnunet-service-transport.c:2597 |
7323 | msgid "# disconnects due to blacklist" | 7194 | msgid "# disconnects due to blacklist" |
7324 | msgstr "# desconexiones debido a la lista negra" | 7195 | msgstr "# desconexiones debido a la lista negra" |
7325 | 7196 | ||
7326 | #: src/transport/gnunet-service-transport.c:2589 | 7197 | #: src/transport/gnunet-service-transport.c:2601 |
7327 | #, fuzzy, c-format | 7198 | #, fuzzy, c-format |
7328 | msgid "Disallowing connection to peer `%s' on transport %s\n" | 7199 | msgid "Disallowing connection to peer `%s' on transport %s\n" |
7329 | msgstr "Se produjo un fallo al cargar el módulo del transporte para «%s»\n" | 7200 | msgstr "Se produjo un fallo al cargar el módulo del transporte para «%s»\n" |
7330 | 7201 | ||
7331 | #: src/transport/gnunet-service-transport.c:2697 | 7202 | #: src/transport/gnunet-service-transport.c:2709 |
7332 | #, fuzzy, c-format | 7203 | #, fuzzy, c-format |
7333 | msgid "Adding blacklisting entry for peer `%s'\n" | 7204 | msgid "Adding blacklisting entry for peer `%s'\n" |
7334 | msgstr "Añadiendo «%s» sin direcciones para el par «%s»\n" | 7205 | msgstr "Añadiendo «%s» sin direcciones para el par «%s»\n" |
7335 | 7206 | ||
7336 | #: src/transport/gnunet-service-transport.c:2706 | 7207 | #: src/transport/gnunet-service-transport.c:2718 |
7337 | #, c-format | 7208 | #, c-format |
7338 | msgid "Adding blacklisting entry for peer `%s':`%s'\n" | 7209 | msgid "Adding blacklisting entry for peer `%s':`%s'\n" |
7339 | msgstr "" | 7210 | msgstr "" |
7340 | 7211 | ||
7341 | #: src/transport/gnunet-service-transport.c:2771 | 7212 | #: src/transport/gnunet-service-transport.c:2783 |
7342 | #, fuzzy | 7213 | #, fuzzy |
7343 | msgid "Transport service is lacking key configuration settings. Exiting.\n" | 7214 | msgid "Transport service is lacking key configuration settings. Exiting.\n" |
7344 | msgstr "" | 7215 | msgstr "" |
7345 | "El servicio de transporte carece de opciones de configuración de clave. " | 7216 | "El servicio de transporte carece de opciones de configuración de clave. " |
7346 | "Saliendo.\n" | 7217 | "Saliendo.\n" |
7347 | 7218 | ||
7348 | #: src/transport/gnunet-service-transport_ats.c:141 | ||
7349 | msgid "# Addresses given to ATS" | ||
7350 | msgstr "" | ||
7351 | |||
7352 | #: src/transport/gnunet-service-transport_hello.c:195 | 7219 | #: src/transport/gnunet-service-transport_hello.c:195 |
7353 | msgid "# refreshed my HELLO" | 7220 | msgid "# refreshed my HELLO" |
7354 | msgstr "# refrescos de mi «HELLO»" | 7221 | msgstr "# refrescos de mi «HELLO»" |
@@ -7494,75 +7361,75 @@ msgstr "# mensajes PING recibidos" | |||
7494 | msgid "SYN request from peer `%s' ignored due impending shutdown\n" | 7361 | msgid "SYN request from peer `%s' ignored due impending shutdown\n" |
7495 | msgstr "" | 7362 | msgstr "" |
7496 | 7363 | ||
7497 | #: src/transport/gnunet-service-transport_neighbours.c:2620 | 7364 | #: src/transport/gnunet-service-transport_neighbours.c:2623 |
7498 | msgid "# Attempts to switch addresses" | 7365 | msgid "# Attempts to switch addresses" |
7499 | msgstr "" | 7366 | msgstr "" |
7500 | 7367 | ||
7501 | #: src/transport/gnunet-service-transport_neighbours.c:3102 | 7368 | #: src/transport/gnunet-service-transport_neighbours.c:3105 |
7502 | #, fuzzy | 7369 | #, fuzzy |
7503 | msgid "# SYN_ACK messages received" | 7370 | msgid "# SYN_ACK messages received" |
7504 | msgstr "# mensajes SET QUOTA recibidos" | 7371 | msgstr "# mensajes SET QUOTA recibidos" |
7505 | 7372 | ||
7506 | #: src/transport/gnunet-service-transport_neighbours.c:3110 | 7373 | #: src/transport/gnunet-service-transport_neighbours.c:3113 |
7507 | #, fuzzy | 7374 | #, fuzzy |
7508 | msgid "# unexpected SYN_ACK messages (no peer)" | 7375 | msgid "# unexpected SYN_ACK messages (no peer)" |
7509 | msgstr "# Mensajes «CONNECT_ACK» inesperados (sin par)" | 7376 | msgstr "# Mensajes «CONNECT_ACK» inesperados (sin par)" |
7510 | 7377 | ||
7511 | #: src/transport/gnunet-service-transport_neighbours.c:3128 | 7378 | #: src/transport/gnunet-service-transport_neighbours.c:3131 |
7512 | #: src/transport/gnunet-service-transport_neighbours.c:3152 | 7379 | #: src/transport/gnunet-service-transport_neighbours.c:3155 |
7513 | #, fuzzy | 7380 | #, fuzzy |
7514 | msgid "# unexpected SYN_ACK messages (not ready)" | 7381 | msgid "# unexpected SYN_ACK messages (not ready)" |
7515 | msgstr "# Mensajes «CONNECT_ACK» inesperados (no estaba preparado)" | 7382 | msgstr "# Mensajes «CONNECT_ACK» inesperados (no estaba preparado)" |
7516 | 7383 | ||
7517 | #: src/transport/gnunet-service-transport_neighbours.c:3164 | 7384 | #: src/transport/gnunet-service-transport_neighbours.c:3167 |
7518 | #, fuzzy | 7385 | #, fuzzy |
7519 | msgid "# unexpected SYN_ACK messages (waiting on ATS)" | 7386 | msgid "# unexpected SYN_ACK messages (waiting on ATS)" |
7520 | msgstr "# Mensajes «CONNECT_ACK» inesperados (esperando en el ATS)" | 7387 | msgstr "# Mensajes «CONNECT_ACK» inesperados (esperando en el ATS)" |
7521 | 7388 | ||
7522 | #: src/transport/gnunet-service-transport_neighbours.c:3189 | 7389 | #: src/transport/gnunet-service-transport_neighbours.c:3192 |
7523 | msgid "# Successful attempts to switch addresses" | 7390 | msgid "# Successful attempts to switch addresses" |
7524 | msgstr "" | 7391 | msgstr "" |
7525 | 7392 | ||
7526 | #: src/transport/gnunet-service-transport_neighbours.c:3202 | 7393 | #: src/transport/gnunet-service-transport_neighbours.c:3205 |
7527 | #, fuzzy | 7394 | #, fuzzy |
7528 | msgid "# unexpected SYN_ACK messages (disconnecting)" | 7395 | msgid "# unexpected SYN_ACK messages (disconnecting)" |
7529 | msgstr "# Mensajes «CONNECT_ACK» inesperados (desconectando)" | 7396 | msgstr "# Mensajes «CONNECT_ACK» inesperados (desconectando)" |
7530 | 7397 | ||
7531 | #: src/transport/gnunet-service-transport_neighbours.c:3374 | 7398 | #: src/transport/gnunet-service-transport_neighbours.c:3377 |
7532 | #, fuzzy | 7399 | #, fuzzy |
7533 | msgid "# ACK messages received" | 7400 | msgid "# ACK messages received" |
7534 | msgstr "# mensajes «REQUEST CONNECT» recibidos" | 7401 | msgstr "# mensajes «REQUEST CONNECT» recibidos" |
7535 | 7402 | ||
7536 | #: src/transport/gnunet-service-transport_neighbours.c:3410 | 7403 | #: src/transport/gnunet-service-transport_neighbours.c:3413 |
7537 | #, fuzzy | 7404 | #, fuzzy |
7538 | msgid "# unexpected ACK messages" | 7405 | msgid "# unexpected ACK messages" |
7539 | msgstr "# Mensajes «SESSION ACK» inesperados" | 7406 | msgstr "# Mensajes «SESSION ACK» inesperados" |
7540 | 7407 | ||
7541 | #: src/transport/gnunet-service-transport_neighbours.c:3498 | 7408 | #: src/transport/gnunet-service-transport_neighbours.c:3501 |
7542 | #, fuzzy | 7409 | #, fuzzy |
7543 | msgid "# quota messages ignored (malformed)" | 7410 | msgid "# quota messages ignored (malformed)" |
7544 | msgstr "# mensajes de desconexión ignorados (formato antiguo)" | 7411 | msgstr "# mensajes de desconexión ignorados (formato antiguo)" |
7545 | 7412 | ||
7546 | #: src/transport/gnunet-service-transport_neighbours.c:3505 | 7413 | #: src/transport/gnunet-service-transport_neighbours.c:3508 |
7547 | #, fuzzy | 7414 | #, fuzzy |
7548 | msgid "# QUOTA messages received" | 7415 | msgid "# QUOTA messages received" |
7549 | msgstr "# Mensajes «GAP PUT» recibidos" | 7416 | msgstr "# Mensajes «GAP PUT» recibidos" |
7550 | 7417 | ||
7551 | #: src/transport/gnunet-service-transport_neighbours.c:3545 | 7418 | #: src/transport/gnunet-service-transport_neighbours.c:3548 |
7552 | #, fuzzy | 7419 | #, fuzzy |
7553 | msgid "# disconnect messages ignored (malformed)" | 7420 | msgid "# disconnect messages ignored (malformed)" |
7554 | msgstr "# mensajes de desconexión ignorados (formato antiguo)" | 7421 | msgstr "# mensajes de desconexión ignorados (formato antiguo)" |
7555 | 7422 | ||
7556 | #: src/transport/gnunet-service-transport_neighbours.c:3552 | 7423 | #: src/transport/gnunet-service-transport_neighbours.c:3555 |
7557 | #, fuzzy | 7424 | #, fuzzy |
7558 | msgid "# DISCONNECT messages received" | 7425 | msgid "# DISCONNECT messages received" |
7559 | msgstr "# mensajes «REQUEST CONNECT» recibidos" | 7426 | msgstr "# mensajes «REQUEST CONNECT» recibidos" |
7560 | 7427 | ||
7561 | #: src/transport/gnunet-service-transport_neighbours.c:3563 | 7428 | #: src/transport/gnunet-service-transport_neighbours.c:3566 |
7562 | msgid "# disconnect messages ignored (timestamp)" | 7429 | msgid "# disconnect messages ignored (timestamp)" |
7563 | msgstr "# mensajes de desconexión ignorados (marca temporal)" | 7430 | msgstr "# mensajes de desconexión ignorados (marca temporal)" |
7564 | 7431 | ||
7565 | #: src/transport/gnunet-service-transport_neighbours.c:3697 | 7432 | #: src/transport/gnunet-service-transport_neighbours.c:3700 |
7566 | msgid "# disconnected from peer upon explicit request" | 7433 | msgid "# disconnected from peer upon explicit request" |
7567 | msgstr "# desconexiones del par debido a una petición explícita" | 7434 | msgstr "# desconexiones del par debido a una petición explícita" |
7568 | 7435 | ||
@@ -7597,8 +7464,8 @@ msgstr "# revalidaciones de direcciones iniciadas" | |||
7597 | 7464 | ||
7598 | #: src/transport/gnunet-service-transport_validation.c:491 | 7465 | #: src/transport/gnunet-service-transport_validation.c:491 |
7599 | #: src/transport/gnunet-service-transport_validation.c:677 | 7466 | #: src/transport/gnunet-service-transport_validation.c:677 |
7600 | #: src/transport/gnunet-service-transport_validation.c:988 | 7467 | #: src/transport/gnunet-service-transport_validation.c:997 |
7601 | #: src/transport/gnunet-service-transport_validation.c:1590 | 7468 | #: src/transport/gnunet-service-transport_validation.c:1609 |
7602 | #, fuzzy | 7469 | #, fuzzy |
7603 | msgid "# validations running" | 7470 | msgid "# validations running" |
7604 | msgstr "Base de datos sqlite ejecutándose\n" | 7471 | msgstr "Base de datos sqlite ejecutándose\n" |
@@ -7626,31 +7493,31 @@ msgstr "" | |||
7626 | msgid "# address revalidations started" | 7493 | msgid "# address revalidations started" |
7627 | msgstr "# revalidaciones de direcciones iniciadas" | 7494 | msgstr "# revalidaciones de direcciones iniciadas" |
7628 | 7495 | ||
7629 | #: src/transport/gnunet-service-transport_validation.c:1114 | 7496 | #: src/transport/gnunet-service-transport_validation.c:1123 |
7630 | msgid "# PING message for different peer received" | 7497 | msgid "# PING message for different peer received" |
7631 | msgstr "# Mensajes PING recibidos para un par diferente" | 7498 | msgstr "# Mensajes PING recibidos para un par diferente" |
7632 | 7499 | ||
7633 | #: src/transport/gnunet-service-transport_validation.c:1165 | 7500 | #: src/transport/gnunet-service-transport_validation.c:1174 |
7634 | #, fuzzy, c-format | 7501 | #, fuzzy, c-format |
7635 | msgid "Plugin `%s' not available, cannot confirm having this address\n" | 7502 | msgid "Plugin `%s' not available, cannot confirm having this address\n" |
7636 | msgstr "" | 7503 | msgstr "" |
7637 | "No confirmando el PING con dirección «%s» ya que no puedo confirmar tener " | 7504 | "No confirmando el PING con dirección «%s» ya que no puedo confirmar tener " |
7638 | "esa dirección.\n" | 7505 | "esa dirección.\n" |
7639 | 7506 | ||
7640 | #: src/transport/gnunet-service-transport_validation.c:1178 | 7507 | #: src/transport/gnunet-service-transport_validation.c:1187 |
7641 | msgid "# failed address checks during validation" | 7508 | msgid "# failed address checks during validation" |
7642 | msgstr "" | 7509 | msgstr "" |
7643 | 7510 | ||
7644 | #: src/transport/gnunet-service-transport_validation.c:1181 | 7511 | #: src/transport/gnunet-service-transport_validation.c:1190 |
7645 | #, c-format | 7512 | #, c-format |
7646 | msgid "Address `%s' is not one of my addresses, not confirming PING\n" | 7513 | msgid "Address `%s' is not one of my addresses, not confirming PING\n" |
7647 | msgstr "" | 7514 | msgstr "" |
7648 | 7515 | ||
7649 | #: src/transport/gnunet-service-transport_validation.c:1189 | 7516 | #: src/transport/gnunet-service-transport_validation.c:1198 |
7650 | msgid "# successful address checks during validation" | 7517 | msgid "# successful address checks during validation" |
7651 | msgstr "" | 7518 | msgstr "" |
7652 | 7519 | ||
7653 | #: src/transport/gnunet-service-transport_validation.c:1202 | 7520 | #: src/transport/gnunet-service-transport_validation.c:1211 |
7654 | #, fuzzy, c-format | 7521 | #, fuzzy, c-format |
7655 | msgid "" | 7522 | msgid "" |
7656 | "Not confirming PING from peer `%s' with address `%s' since I cannot confirm " | 7523 | "Not confirming PING from peer `%s' with address `%s' since I cannot confirm " |
@@ -7659,71 +7526,32 @@ msgstr "" | |||
7659 | "No confirmando el PING con dirección «%s» ya que no puedo confirmar tener " | 7526 | "No confirmando el PING con dirección «%s» ya que no puedo confirmar tener " |
7660 | "esa dirección.\n" | 7527 | "esa dirección.\n" |
7661 | 7528 | ||
7662 | #: src/transport/gnunet-service-transport_validation.c:1257 | 7529 | #: src/transport/gnunet-service-transport_validation.c:1266 |
7663 | #, fuzzy, c-format | 7530 | #, fuzzy, c-format |
7664 | msgid "Failed to create PONG signature for peer `%s'\n" | 7531 | msgid "Failed to create PONG signature for peer `%s'\n" |
7665 | msgstr "Se produjo un fallo al crear la página para «%s»\n" | 7532 | msgstr "Se produjo un fallo al crear la página para «%s»\n" |
7666 | 7533 | ||
7667 | #: src/transport/gnunet-service-transport_validation.c:1308 | 7534 | #: src/transport/gnunet-service-transport_validation.c:1317 |
7668 | msgid "# PONGs unicast via reliable transport" | 7535 | msgid "# PONGs unicast via reliable transport" |
7669 | msgstr "# unicast de PONG vía transporte confiable" | 7536 | msgstr "# unicast de PONG vía transporte confiable" |
7670 | 7537 | ||
7671 | #: src/transport/gnunet-service-transport_validation.c:1317 | 7538 | #: src/transport/gnunet-service-transport_validation.c:1326 |
7672 | msgid "# PONGs multicast to all available addresses" | 7539 | msgid "# PONGs multicast to all available addresses" |
7673 | msgstr "# multicast de PONG a todas las direcciones disponibles" | 7540 | msgstr "# multicast de PONG a todas las direcciones disponibles" |
7674 | 7541 | ||
7675 | #: src/transport/gnunet-service-transport_validation.c:1480 | 7542 | #: src/transport/gnunet-service-transport_validation.c:1499 |
7676 | msgid "# PONGs dropped, no matching pending validation" | 7543 | msgid "# PONGs dropped, no matching pending validation" |
7677 | msgstr "# PONG omitidos, no hay una validación pendiente coincidente" | 7544 | msgstr "# PONG omitidos, no hay una validación pendiente coincidente" |
7678 | 7545 | ||
7679 | #: src/transport/gnunet-service-transport_validation.c:1498 | 7546 | #: src/transport/gnunet-service-transport_validation.c:1517 |
7680 | msgid "# PONGs dropped, signature expired" | 7547 | msgid "# PONGs dropped, signature expired" |
7681 | msgstr "# Mensajes PONG omitidos, firma expirada" | 7548 | msgstr "# Mensajes PONG omitidos, firma expirada" |
7682 | 7549 | ||
7683 | #: src/transport/gnunet-service-transport_validation.c:1553 | 7550 | #: src/transport/gnunet-service-transport_validation.c:1572 |
7684 | #, fuzzy | 7551 | #, fuzzy |
7685 | msgid "# validations succeeded" | 7552 | msgid "# validations succeeded" |
7686 | msgstr "# revalidaciones de direcciones iniciadas" | 7553 | msgstr "# revalidaciones de direcciones iniciadas" |
7687 | 7554 | ||
7688 | #: src/transport/gnunet-transport-profiler.c:219 | ||
7689 | #, c-format | ||
7690 | msgid "%llu B in %llu ms == %.2f KB/s!\n" | ||
7691 | msgstr "" | ||
7692 | |||
7693 | #: src/transport/gnunet-transport-profiler.c:617 | ||
7694 | msgid "send data to peer" | ||
7695 | msgstr "" | ||
7696 | |||
7697 | #: src/transport/gnunet-transport-profiler.c:621 | ||
7698 | #, fuzzy | ||
7699 | msgid "receive data from peer" | ||
7700 | msgstr "# respuestas recibidas de otros pares" | ||
7701 | |||
7702 | #: src/transport/gnunet-transport-profiler.c:626 | ||
7703 | #, fuzzy | ||
7704 | msgid "iterations" | ||
7705 | msgstr "Otras configuraciones" | ||
7706 | |||
7707 | #: src/transport/gnunet-transport-profiler.c:631 | ||
7708 | #, fuzzy | ||
7709 | msgid "number of messages to send" | ||
7710 | msgstr "número de mensajes a usar por iteración" | ||
7711 | |||
7712 | #: src/transport/gnunet-transport-profiler.c:636 | ||
7713 | #, fuzzy | ||
7714 | msgid "message size to use" | ||
7715 | msgstr "tamaño del mensaje" | ||
7716 | |||
7717 | #: src/transport/gnunet-transport-profiler.c:641 | ||
7718 | #: src/transport/gnunet-transport.c:1462 | ||
7719 | msgid "peer identity" | ||
7720 | msgstr "identidad del par" | ||
7721 | |||
7722 | #: src/transport/gnunet-transport-profiler.c:652 | ||
7723 | #: src/transport/gnunet-transport.c:1482 | ||
7724 | msgid "Direct access to transport service." | ||
7725 | msgstr "Acceso directo al servicio de transporte." | ||
7726 | |||
7727 | #: src/transport/gnunet-transport.c:413 | 7555 | #: src/transport/gnunet-transport.c:413 |
7728 | #, c-format | 7556 | #, c-format |
7729 | msgid "Transmitted %llu bytes/s (%llu bytes in %s)\n" | 7557 | msgid "Transmitted %llu bytes/s (%llu bytes in %s)\n" |
@@ -7867,6 +7695,11 @@ msgstr "" | |||
7867 | msgid "do not resolve hostnames" | 7695 | msgid "do not resolve hostnames" |
7868 | msgstr "no resolver nombres de máquinas" | 7696 | msgstr "no resolver nombres de máquinas" |
7869 | 7697 | ||
7698 | #: src/transport/gnunet-transport.c:1462 | ||
7699 | #: src/transport/gnunet-transport-profiler.c:641 | ||
7700 | msgid "peer identity" | ||
7701 | msgstr "identidad del par" | ||
7702 | |||
7870 | #: src/transport/gnunet-transport.c:1466 | 7703 | #: src/transport/gnunet-transport.c:1466 |
7871 | #, fuzzy | 7704 | #, fuzzy |
7872 | msgid "monitor plugin sessions" | 7705 | msgid "monitor plugin sessions" |
@@ -7876,6 +7709,40 @@ msgstr "# sesiones wlan pendientes" | |||
7876 | msgid "send data for benchmarking to the other peer (until CTRL-C)" | 7709 | msgid "send data for benchmarking to the other peer (until CTRL-C)" |
7877 | msgstr "enviar data para prueba a otro par (hasta CTRL-C)" | 7710 | msgstr "enviar data para prueba a otro par (hasta CTRL-C)" |
7878 | 7711 | ||
7712 | #: src/transport/gnunet-transport.c:1482 | ||
7713 | #: src/transport/gnunet-transport-profiler.c:652 | ||
7714 | msgid "Direct access to transport service." | ||
7715 | msgstr "Acceso directo al servicio de transporte." | ||
7716 | |||
7717 | #: src/transport/gnunet-transport-profiler.c:219 | ||
7718 | #, c-format | ||
7719 | msgid "%llu B in %llu ms == %.2f KB/s!\n" | ||
7720 | msgstr "" | ||
7721 | |||
7722 | #: src/transport/gnunet-transport-profiler.c:617 | ||
7723 | msgid "send data to peer" | ||
7724 | msgstr "" | ||
7725 | |||
7726 | #: src/transport/gnunet-transport-profiler.c:621 | ||
7727 | #, fuzzy | ||
7728 | msgid "receive data from peer" | ||
7729 | msgstr "# respuestas recibidas de otros pares" | ||
7730 | |||
7731 | #: src/transport/gnunet-transport-profiler.c:626 | ||
7732 | #, fuzzy | ||
7733 | msgid "iterations" | ||
7734 | msgstr "Otras configuraciones" | ||
7735 | |||
7736 | #: src/transport/gnunet-transport-profiler.c:631 | ||
7737 | #, fuzzy | ||
7738 | msgid "number of messages to send" | ||
7739 | msgstr "número de mensajes a usar por iteración" | ||
7740 | |||
7741 | #: src/transport/gnunet-transport-profiler.c:636 | ||
7742 | #, fuzzy | ||
7743 | msgid "message size to use" | ||
7744 | msgstr "tamaño del mensaje" | ||
7745 | |||
7879 | #: src/transport/plugin_transport_http_client.c:1474 | 7746 | #: src/transport/plugin_transport_http_client.c:1474 |
7880 | #: src/transport/plugin_transport_http_server.c:2312 | 7747 | #: src/transport/plugin_transport_http_server.c:2312 |
7881 | #: src/transport/plugin_transport_http_server.c:3526 | 7748 | #: src/transport/plugin_transport_http_server.c:3526 |
@@ -8160,6 +8027,23 @@ msgstr "Transporte TCP no escuchando en ningún puerto (únicamente cliente)\n" | |||
8160 | msgid "TCP transport advertises itself as being on port %llu\n" | 8027 | msgid "TCP transport advertises itself as being on port %llu\n" |
8161 | msgstr "El transporte TCP anuncia que está en el puerto %llu\n" | 8028 | msgstr "El transporte TCP anuncia que está en el puerto %llu\n" |
8162 | 8029 | ||
8030 | #: src/transport/plugin_transport_udp_broadcasting.c:168 | ||
8031 | #, fuzzy | ||
8032 | msgid "# Multicast HELLO beacons received via UDP" | ||
8033 | msgstr "# beacons HELLO multicast IPv6 recibidos vía UDP" | ||
8034 | |||
8035 | #: src/transport/plugin_transport_udp_broadcasting.c:548 | ||
8036 | msgid "" | ||
8037 | "Disabling HELLO broadcasting due to friend-to-friend only configuration!\n" | ||
8038 | msgstr "" | ||
8039 | |||
8040 | #: src/transport/plugin_transport_udp_broadcasting.c:565 | ||
8041 | #, c-format | ||
8042 | msgid "Failed to set IPv4 broadcast option for broadcast socket on port %d\n" | ||
8043 | msgstr "" | ||
8044 | "Se produjo un fallo al establecer la opción de «broadcast» IPv4 para el " | ||
8045 | "«socket» en el puerto %d\n" | ||
8046 | |||
8163 | #: src/transport/plugin_transport_udp.c:3366 | 8047 | #: src/transport/plugin_transport_udp.c:3366 |
8164 | #, c-format | 8048 | #, c-format |
8165 | msgid "" | 8049 | msgid "" |
@@ -8214,23 +8098,6 @@ msgstr "«%s» no es una dirección IP válida.\n" | |||
8214 | msgid "Failed to create UDP network sockets\n" | 8098 | msgid "Failed to create UDP network sockets\n" |
8215 | msgstr "Se produjo un fallo al crear una nueva firma" | 8099 | msgstr "Se produjo un fallo al crear una nueva firma" |
8216 | 8100 | ||
8217 | #: src/transport/plugin_transport_udp_broadcasting.c:168 | ||
8218 | #, fuzzy | ||
8219 | msgid "# Multicast HELLO beacons received via UDP" | ||
8220 | msgstr "# beacons HELLO multicast IPv6 recibidos vía UDP" | ||
8221 | |||
8222 | #: src/transport/plugin_transport_udp_broadcasting.c:548 | ||
8223 | msgid "" | ||
8224 | "Disabling HELLO broadcasting due to friend-to-friend only configuration!\n" | ||
8225 | msgstr "" | ||
8226 | |||
8227 | #: src/transport/plugin_transport_udp_broadcasting.c:565 | ||
8228 | #, c-format | ||
8229 | msgid "Failed to set IPv4 broadcast option for broadcast socket on port %d\n" | ||
8230 | msgstr "" | ||
8231 | "Se produjo un fallo al establecer la opción de «broadcast» IPv4 para el " | ||
8232 | "«socket» en el puerto %d\n" | ||
8233 | |||
8234 | #: src/transport/plugin_transport_unix.c:1403 | 8101 | #: src/transport/plugin_transport_unix.c:1403 |
8235 | #, fuzzy, c-format | 8102 | #, fuzzy, c-format |
8236 | msgid "Cannot create path to `%s'\n" | 8103 | msgid "Cannot create path to `%s'\n" |
@@ -8350,7 +8217,7 @@ msgstr "" | |||
8350 | "El código de procesado para el mensaje del tipo %u no llamó a " | 8217 | "El código de procesado para el mensaje del tipo %u no llamó a " |
8351 | "«GNUNET_SERVER_receive_done» después de %s\n" | 8218 | "«GNUNET_SERVER_receive_done» después de %s\n" |
8352 | 8219 | ||
8353 | #: src/transport/tcp_service_legacy.c:339 src/util/service.c:2336 | 8220 | #: src/transport/tcp_service_legacy.c:339 src/util/service.c:2346 |
8354 | #, c-format | 8221 | #, c-format |
8355 | msgid "Unknown address family %d\n" | 8222 | msgid "Unknown address family %d\n" |
8356 | msgstr "Familia de direcciones %d desconocida\n" | 8223 | msgstr "Familia de direcciones %d desconocida\n" |
@@ -8431,19 +8298,19 @@ msgstr "Imposible cambiar el usuario/grupo a «%s»: %s\n" | |||
8431 | msgid "do daemonize (detach from terminal)" | 8298 | msgid "do daemonize (detach from terminal)" |
8432 | msgstr "demonizar (desasociar del terminal)" | 8299 | msgstr "demonizar (desasociar del terminal)" |
8433 | 8300 | ||
8434 | #: src/transport/tcp_service_legacy.c:1448 src/util/program.c:244 | 8301 | #: src/transport/tcp_service_legacy.c:1448 src/util/program.c:255 |
8435 | #: src/util/service.c:1790 | 8302 | #: src/util/service.c:1790 |
8436 | #, fuzzy, c-format | 8303 | #, fuzzy, c-format |
8437 | msgid "Malformed configuration file `%s', exit ...\n" | 8304 | msgid "Malformed configuration file `%s', exit ...\n" |
8438 | msgstr "Se produjo un fallo al borrar el fichero de configuración %s\n" | 8305 | msgstr "Se produjo un fallo al borrar el fichero de configuración %s\n" |
8439 | 8306 | ||
8440 | #: src/transport/tcp_service_legacy.c:1458 src/util/program.c:261 | 8307 | #: src/transport/tcp_service_legacy.c:1458 src/util/program.c:272 |
8441 | #: src/util/service.c:1801 | 8308 | #: src/util/service.c:1801 |
8442 | #, fuzzy | 8309 | #, fuzzy |
8443 | msgid "Malformed configuration, exit ...\n" | 8310 | msgid "Malformed configuration, exit ...\n" |
8444 | msgstr "Se produjo un fallo al borrar el fichero de configuración %s\n" | 8311 | msgstr "Se produjo un fallo al borrar el fichero de configuración %s\n" |
8445 | 8312 | ||
8446 | #: src/transport/tcp_service_legacy.c:1463 src/util/program.c:256 | 8313 | #: src/transport/tcp_service_legacy.c:1463 src/util/program.c:267 |
8447 | #: src/util/service.c:1807 | 8314 | #: src/util/service.c:1807 |
8448 | #, c-format | 8315 | #, c-format |
8449 | msgid "Could not access configuration file `%s'\n" | 8316 | msgid "Could not access configuration file `%s'\n" |
@@ -8483,7 +8350,7 @@ msgstr "Los metadatos serializados «%s» son mayores de lo permitido (%u>%u)" | |||
8483 | msgid "Metadata `%s' failed to deserialize" | 8350 | msgid "Metadata `%s' failed to deserialize" |
8484 | msgstr "Se produjo un fallo al deserializar los metadatos «%s»" | 8351 | msgstr "Se produjo un fallo al deserializar los metadatos «%s»" |
8485 | 8352 | ||
8486 | #: src/util/client.c:882 | 8353 | #: src/util/client.c:911 |
8487 | #, c-format | 8354 | #, c-format |
8488 | msgid "Need a non-empty hostname for service `%s'.\n" | 8355 | msgid "Need a non-empty hostname for service `%s'.\n" |
8489 | msgstr "Se necesita un nombre de máquina no vacío para el servicio «%s».\n" | 8356 | msgstr "Se necesita un nombre de máquina no vacío para el servicio «%s».\n" |
@@ -8587,22 +8454,22 @@ msgstr "" | |||
8587 | "El tamaño del fichero en disco es incorrecto para este «Bloom " | 8454 | "El tamaño del fichero en disco es incorrecto para este «Bloom " |
8588 | "filter» (esperado %llu, tiene %llu)\n" | 8455 | "filter» (esperado %llu, tiene %llu)\n" |
8589 | 8456 | ||
8590 | #: src/util/crypto_ecc.c:777 | 8457 | #: src/util/crypto_ecc.c:810 |
8591 | #, c-format | 8458 | #, c-format |
8592 | msgid "ECC signing failed at %s:%d: %s\n" | 8459 | msgid "ECC signing failed at %s:%d: %s\n" |
8593 | msgstr "El firmado ECC falló en %s:%d: %s\n" | 8460 | msgstr "El firmado ECC falló en %s:%d: %s\n" |
8594 | 8461 | ||
8595 | #: src/util/crypto_ecc.c:827 | 8462 | #: src/util/crypto_ecc.c:860 |
8596 | #, fuzzy, c-format | 8463 | #, fuzzy, c-format |
8597 | msgid "EdDSA signing failed at %s:%d: %s\n" | 8464 | msgid "EdDSA signing failed at %s:%d: %s\n" |
8598 | msgstr "El firmado ECC falló en %s:%d: %s\n" | 8465 | msgstr "El firmado ECC falló en %s:%d: %s\n" |
8599 | 8466 | ||
8600 | #: src/util/crypto_ecc.c:901 | 8467 | #: src/util/crypto_ecc.c:934 |
8601 | #, fuzzy, c-format | 8468 | #, fuzzy, c-format |
8602 | msgid "ECDSA signature verification failed at %s:%d: %s\n" | 8469 | msgid "ECDSA signature verification failed at %s:%d: %s\n" |
8603 | msgstr "La verificación de la firma RSA fallo en %s:%d: %s\n" | 8470 | msgstr "La verificación de la firma RSA fallo en %s:%d: %s\n" |
8604 | 8471 | ||
8605 | #: src/util/crypto_ecc.c:958 | 8472 | #: src/util/crypto_ecc.c:991 |
8606 | #, fuzzy, c-format | 8473 | #, fuzzy, c-format |
8607 | msgid "EdDSA signature verification failed at %s:%d: %s\n" | 8474 | msgid "EdDSA signature verification failed at %s:%d: %s\n" |
8608 | msgstr "La verificación de la firma RSA fallo en %s:%d: %s\n" | 8475 | msgstr "La verificación de la firma RSA fallo en %s:%d: %s\n" |
@@ -8830,22 +8697,22 @@ msgstr "" | |||
8830 | msgid "Manipulate GNUnet configuration files" | 8697 | msgid "Manipulate GNUnet configuration files" |
8831 | msgstr "Manipular ficheros de configuración de GNUnet" | 8698 | msgstr "Manipular ficheros de configuración de GNUnet" |
8832 | 8699 | ||
8833 | #: src/util/gnunet-ecc.c:89 | 8700 | #: src/util/gnunet-ecc.c:94 |
8834 | #, c-format | 8701 | #, c-format |
8835 | msgid "Failed to open `%s': %s\n" | 8702 | msgid "Failed to open `%s': %s\n" |
8836 | msgstr "Se produjo un fallo al abrir «%s»: %s\n" | 8703 | msgstr "Se produjo un fallo al abrir «%s»: %s\n" |
8837 | 8704 | ||
8838 | #: src/util/gnunet-ecc.c:125 | 8705 | #: src/util/gnunet-ecc.c:130 |
8839 | #, fuzzy, c-format | 8706 | #, fuzzy, c-format |
8840 | msgid "Generating %u keys like %s, please wait" | 8707 | msgid "Generating %u keys like %s, please wait" |
8841 | msgstr "Generando %u claves, por favor, espere" | 8708 | msgstr "Generando %u claves, por favor, espere" |
8842 | 8709 | ||
8843 | #: src/util/gnunet-ecc.c:138 | 8710 | #: src/util/gnunet-ecc.c:143 |
8844 | #, c-format | 8711 | #, c-format |
8845 | msgid "Generating %u keys, please wait" | 8712 | msgid "Generating %u keys, please wait" |
8846 | msgstr "Generando %u claves, por favor, espere" | 8713 | msgstr "Generando %u claves, por favor, espere" |
8847 | 8714 | ||
8848 | #: src/util/gnunet-ecc.c:179 | 8715 | #: src/util/gnunet-ecc.c:184 |
8849 | #, c-format | 8716 | #, c-format |
8850 | msgid "" | 8717 | msgid "" |
8851 | "\n" | 8718 | "\n" |
@@ -8854,65 +8721,70 @@ msgstr "" | |||
8854 | "\n" | 8721 | "\n" |
8855 | "Se produjo un fallo al escribir en «%s»: %s\n" | 8722 | "Se produjo un fallo al escribir en «%s»: %s\n" |
8856 | 8723 | ||
8857 | #: src/util/gnunet-ecc.c:189 | 8724 | #: src/util/gnunet-ecc.c:194 |
8858 | #, fuzzy, c-format | 8725 | #, fuzzy, c-format |
8859 | msgid "" | 8726 | msgid "" |
8860 | "\n" | 8727 | "\n" |
8861 | "Finished!\n" | 8728 | "Finished!\n" |
8862 | msgstr "¡Finalizado!\n" | 8729 | msgstr "¡Finalizado!\n" |
8863 | 8730 | ||
8864 | #: src/util/gnunet-ecc.c:192 | 8731 | #: src/util/gnunet-ecc.c:197 |
8865 | #, c-format | 8732 | #, c-format |
8866 | msgid "" | 8733 | msgid "" |
8867 | "\n" | 8734 | "\n" |
8868 | "Error, %u keys not generated\n" | 8735 | "Error, %u keys not generated\n" |
8869 | msgstr "" | 8736 | msgstr "" |
8870 | 8737 | ||
8871 | #: src/util/gnunet-ecc.c:283 | 8738 | #: src/util/gnunet-ecc.c:288 |
8872 | #, fuzzy, c-format | 8739 | #, fuzzy, c-format |
8873 | msgid "Hostkeys file `%s' not found\n" | 8740 | msgid "Hostkeys file `%s' not found\n" |
8874 | msgstr "El fichero de máquinas %s no fue encontrado\n" | 8741 | msgstr "El fichero de máquinas %s no fue encontrado\n" |
8875 | 8742 | ||
8876 | #: src/util/gnunet-ecc.c:294 | 8743 | #: src/util/gnunet-ecc.c:299 |
8877 | #, fuzzy, c-format | 8744 | #, fuzzy, c-format |
8878 | msgid "Hostkeys file `%s' is empty\n" | 8745 | msgid "Hostkeys file `%s' is empty\n" |
8879 | msgstr "El archivo de amigos «%s» está vacío.\n" | 8746 | msgstr "El archivo de amigos «%s» está vacío.\n" |
8880 | 8747 | ||
8881 | #: src/util/gnunet-ecc.c:316 | 8748 | #: src/util/gnunet-ecc.c:321 |
8882 | #, fuzzy, c-format | 8749 | #, fuzzy, c-format |
8883 | msgid "Could not read hostkey file: %s\n" | 8750 | msgid "Could not read hostkey file: %s\n" |
8884 | msgstr "¡No se puede leer el fichero de claves de máquina!\n" | 8751 | msgstr "¡No se puede leer el fichero de claves de máquina!\n" |
8885 | 8752 | ||
8886 | #: src/util/gnunet-ecc.c:367 | 8753 | #: src/util/gnunet-ecc.c:372 |
8887 | msgid "No hostkey file specified on command line\n" | 8754 | msgid "No hostkey file specified on command line\n" |
8888 | msgstr "No se ha especificado la clave de máquina en la línea de comandos\n" | 8755 | msgstr "No se ha especificado la clave de máquina en la línea de comandos\n" |
8889 | 8756 | ||
8890 | #: src/util/gnunet-ecc.c:425 | 8757 | #: src/util/gnunet-ecc.c:437 |
8891 | msgid "list keys included in a file (for testing)" | 8758 | msgid "list keys included in a file (for testing)" |
8892 | msgstr "" | 8759 | msgstr "" |
8893 | 8760 | ||
8894 | #: src/util/gnunet-ecc.c:430 | 8761 | #: src/util/gnunet-ecc.c:442 |
8895 | msgid "number of keys to list included in a file (for testing)" | 8762 | msgid "number of keys to list included in a file (for testing)" |
8896 | msgstr "" | 8763 | msgstr "" |
8897 | 8764 | ||
8898 | #: src/util/gnunet-ecc.c:435 | 8765 | #: src/util/gnunet-ecc.c:447 |
8899 | msgid "create COUNT public-private key pairs (for testing)" | 8766 | msgid "create COUNT public-private key pairs (for testing)" |
8900 | msgstr "crea «COUNT» pares de claves pública-privada (para pruebas)" | 8767 | msgstr "crea «COUNT» pares de claves pública-privada (para pruebas)" |
8901 | 8768 | ||
8902 | #: src/util/gnunet-ecc.c:439 | 8769 | #: src/util/gnunet-ecc.c:451 |
8903 | msgid "print the public key in ASCII format" | 8770 | msgid "print the public key in ASCII format" |
8904 | msgstr "imprime la clave pública en formato ASCII" | 8771 | msgstr "imprime la clave pública en formato ASCII" |
8905 | 8772 | ||
8906 | #: src/util/gnunet-ecc.c:443 | 8773 | #: src/util/gnunet-ecc.c:455 |
8774 | #, fuzzy | ||
8775 | msgid "print the private key in ASCII format" | ||
8776 | msgstr "imprime la clave pública en formato ASCII" | ||
8777 | |||
8778 | #: src/util/gnunet-ecc.c:459 | ||
8907 | #, fuzzy | 8779 | #, fuzzy |
8908 | msgid "print the public key in HEX format" | 8780 | msgid "print the public key in HEX format" |
8909 | msgstr "imprime la clave pública en formato ASCII" | 8781 | msgstr "imprime la clave pública en formato ASCII" |
8910 | 8782 | ||
8911 | #: src/util/gnunet-ecc.c:447 | 8783 | #: src/util/gnunet-ecc.c:463 |
8912 | msgid "print examples of ECC operations (used for compatibility testing)" | 8784 | msgid "print examples of ECC operations (used for compatibility testing)" |
8913 | msgstr "" | 8785 | msgstr "" |
8914 | 8786 | ||
8915 | #: src/util/gnunet-ecc.c:463 | 8787 | #: src/util/gnunet-ecc.c:479 |
8916 | msgid "Manipulate GNUnet private ECC key files" | 8788 | msgid "Manipulate GNUnet private ECC key files" |
8917 | msgstr "Manipular los ficheros de clave privada ECC de GNUnet" | 8789 | msgstr "Manipular los ficheros de clave privada ECC de GNUnet" |
8918 | 8790 | ||
@@ -9078,12 +8950,12 @@ msgstr "" | |||
9078 | "¡Se debe especificar «%s» o una dirección numérica IP para «%s» de «%s» en " | 8950 | "¡Se debe especificar «%s» o una dirección numérica IP para «%s» de «%s» en " |
9079 | "la configuración!\n" | 8951 | "la configuración!\n" |
9080 | 8952 | ||
9081 | #: src/util/resolver_api.c:826 | 8953 | #: src/util/resolver_api.c:827 |
9082 | #, c-format | 8954 | #, c-format |
9083 | msgid "Timeout trying to resolve hostname `%s'.\n" | 8955 | msgid "Timeout trying to resolve hostname `%s'.\n" |
9084 | msgstr "Expiración de plazo intentando resolver el nombre de máquina «%s».\n" | 8956 | msgstr "Expiración de plazo intentando resolver el nombre de máquina «%s».\n" |
9085 | 8957 | ||
9086 | #: src/util/resolver_api.c:839 | 8958 | #: src/util/resolver_api.c:840 |
9087 | #, c-format | 8959 | #, c-format |
9088 | msgid "Timeout trying to resolve IP address `%s'.\n" | 8960 | msgid "Timeout trying to resolve IP address `%s'.\n" |
9089 | msgstr "Expiración de plazo intentando resolver la dirección IP «%s».\n" | 8961 | msgstr "Expiración de plazo intentando resolver la dirección IP «%s».\n" |
@@ -9091,13 +8963,13 @@ msgstr "Expiración de plazo intentando resolver la dirección IP «%s».\n" | |||
9091 | # Miguel: He traducido "default" por "predeterminado", la locución | 8963 | # Miguel: He traducido "default" por "predeterminado", la locución |
9092 | # "por defecto" no tiene sentido en sitios como este y he tratado | 8964 | # "por defecto" no tiene sentido en sitios como este y he tratado |
9093 | # de ser consistente. | 8965 | # de ser consistente. |
9094 | #: src/util/resolver_api.c:1023 | 8966 | #: src/util/resolver_api.c:1024 |
9095 | #, fuzzy | 8967 | #, fuzzy |
9096 | msgid "Resolver not configured correctly.\n" | 8968 | msgid "Resolver not configured correctly.\n" |
9097 | msgstr "¡El servicio predeterminado «%s» no está configurado correctamente!\n" | 8969 | msgstr "¡El servicio predeterminado «%s» no está configurado correctamente!\n" |
9098 | 8970 | ||
9099 | #: src/util/resolver_api.c:1109 src/util/resolver_api.c:1132 | 8971 | #: src/util/resolver_api.c:1110 src/util/resolver_api.c:1133 |
9100 | #: src/util/resolver_api.c:1146 | 8972 | #: src/util/resolver_api.c:1147 |
9101 | #, fuzzy, c-format | 8973 | #, fuzzy, c-format |
9102 | msgid "Could not resolve our FQDN: %s\n" | 8974 | msgid "Could not resolve our FQDN: %s\n" |
9103 | msgstr "" | 8975 | msgstr "" |
@@ -9108,7 +8980,7 @@ msgid "" | |||
9108 | "Could not bind to any of the ports I was supposed to, refusing to run!\n" | 8980 | "Could not bind to any of the ports I was supposed to, refusing to run!\n" |
9109 | msgstr "" | 8981 | msgstr "" |
9110 | 8982 | ||
9111 | #: src/util/service.c:2081 | 8983 | #: src/util/service.c:2091 |
9112 | #, fuzzy, c-format | 8984 | #, fuzzy, c-format |
9113 | msgid "" | 8985 | msgid "" |
9114 | "Processing code for message of type %u did not call " | 8986 | "Processing code for message of type %u did not call " |
@@ -9300,65 +9172,65 @@ msgstr "# Paquetes ICMPv4 omitidos (no permitido)" | |||
9300 | msgid "# ICMPv6 packets dropped (not allowed)" | 9172 | msgid "# ICMPv6 packets dropped (not allowed)" |
9301 | msgstr "# Paquetes ICMPv6 omitidos (no permitido)" | 9173 | msgstr "# Paquetes ICMPv6 omitidos (no permitido)" |
9302 | 9174 | ||
9303 | #: src/vpn/gnunet-service-vpn.c:2232 | 9175 | #: src/vpn/gnunet-service-vpn.c:2235 |
9304 | msgid "# Packets received from TUN interface" | 9176 | msgid "# Packets received from TUN interface" |
9305 | msgstr "# Paquetes recibidos de la interfaz TUN" | 9177 | msgstr "# Paquetes recibidos de la interfaz TUN" |
9306 | 9178 | ||
9307 | #: src/vpn/gnunet-service-vpn.c:2265 src/vpn/gnunet-service-vpn.c:2301 | 9179 | #: src/vpn/gnunet-service-vpn.c:2268 src/vpn/gnunet-service-vpn.c:2304 |
9308 | #, c-format | 9180 | #, c-format |
9309 | msgid "Packet received for unmapped destination `%s' (dropping it)\n" | 9181 | msgid "Packet received for unmapped destination `%s' (dropping it)\n" |
9310 | msgstr "Paquete recibido para el destino «%s» no mapeado (omitiéndolo)\n" | 9182 | msgstr "Paquete recibido para el destino «%s» no mapeado (omitiéndolo)\n" |
9311 | 9183 | ||
9312 | #: src/vpn/gnunet-service-vpn.c:2311 | 9184 | #: src/vpn/gnunet-service-vpn.c:2314 |
9313 | msgid "Received IPv4 packet with options (dropping it)\n" | 9185 | msgid "Received IPv4 packet with options (dropping it)\n" |
9314 | msgstr "Recibido paquete IPv4 con opciones (omitiéndolo)\n" | 9186 | msgstr "Recibido paquete IPv4 con opciones (omitiéndolo)\n" |
9315 | 9187 | ||
9316 | #: src/vpn/gnunet-service-vpn.c:2325 | 9188 | #: src/vpn/gnunet-service-vpn.c:2328 |
9317 | #, c-format | 9189 | #, c-format |
9318 | msgid "Received packet of unknown protocol %d from TUN (dropping it)\n" | 9190 | msgid "Received packet of unknown protocol %d from TUN (dropping it)\n" |
9319 | msgstr "Recibido paquete de protocolo %d desconocido desde TUN (omitiéndolo)\n" | 9191 | msgstr "Recibido paquete de protocolo %d desconocido desde TUN (omitiéndolo)\n" |
9320 | 9192 | ||
9321 | #: src/vpn/gnunet-service-vpn.c:2364 | 9193 | #: src/vpn/gnunet-service-vpn.c:2367 |
9322 | msgid "Failed to find unallocated IPv4 address in VPN's range\n" | 9194 | msgid "Failed to find unallocated IPv4 address in VPN's range\n" |
9323 | msgstr "No se encontraron direcciones IPv4 libres en el rango de la VPN\n" | 9195 | msgstr "No se encontraron direcciones IPv4 libres en el rango de la VPN\n" |
9324 | 9196 | ||
9325 | #: src/vpn/gnunet-service-vpn.c:2419 | 9197 | #: src/vpn/gnunet-service-vpn.c:2422 |
9326 | msgid "Failed to find unallocated IPv6 address in VPN's range\n" | 9198 | msgid "Failed to find unallocated IPv6 address in VPN's range\n" |
9327 | msgstr "No se encontraron direcciones IPv6 libres en el rango de la VPN\n" | 9199 | msgstr "No se encontraron direcciones IPv6 libres en el rango de la VPN\n" |
9328 | 9200 | ||
9329 | #: src/vpn/gnunet-service-vpn.c:2461 src/vpn/gnunet-service-vpn.c:2683 | 9201 | #: src/vpn/gnunet-service-vpn.c:2464 src/vpn/gnunet-service-vpn.c:2686 |
9330 | msgid "# Active destinations" | 9202 | msgid "# Active destinations" |
9331 | msgstr "# Destinos activos" | 9203 | msgstr "# Destinos activos" |
9332 | 9204 | ||
9333 | #: src/vpn/gnunet-service-vpn.c:2732 | 9205 | #: src/vpn/gnunet-service-vpn.c:2735 |
9334 | msgid "Failed to allocate IP address for new destination\n" | 9206 | msgid "Failed to allocate IP address for new destination\n" |
9335 | msgstr "" | 9207 | msgstr "" |
9336 | "Se produjo un fallo al alojar las direcciones IP para el nuevo destino\n" | 9208 | "Se produjo un fallo al alojar las direcciones IP para el nuevo destino\n" |
9337 | 9209 | ||
9338 | #: src/vpn/gnunet-service-vpn.c:2995 | 9210 | #: src/vpn/gnunet-service-vpn.c:2998 |
9339 | #, fuzzy | 9211 | #, fuzzy |
9340 | msgid "Must specify valid IPv6 address" | 9212 | msgid "Must specify valid IPv6 address" |
9341 | msgstr "«%s» no es una dirección IP válida.\n" | 9213 | msgstr "«%s» no es una dirección IP válida.\n" |
9342 | 9214 | ||
9343 | #: src/vpn/gnunet-service-vpn.c:3019 | 9215 | #: src/vpn/gnunet-service-vpn.c:3022 |
9344 | msgid "Must specify valid IPv6 mask" | 9216 | msgid "Must specify valid IPv6 mask" |
9345 | msgstr "" | 9217 | msgstr "" |
9346 | 9218 | ||
9347 | #: src/vpn/gnunet-service-vpn.c:3027 | 9219 | #: src/vpn/gnunet-service-vpn.c:3030 |
9348 | msgid "IPv6 support disabled as this system does not support IPv6\n" | 9220 | msgid "IPv6 support disabled as this system does not support IPv6\n" |
9349 | msgstr "" | 9221 | msgstr "" |
9350 | "El soporte de IPv6 se deshabilita porque este sistema no soporta IPv6\n" | 9222 | "El soporte de IPv6 se deshabilita porque este sistema no soporta IPv6\n" |
9351 | 9223 | ||
9352 | #: src/vpn/gnunet-service-vpn.c:3040 | 9224 | #: src/vpn/gnunet-service-vpn.c:3043 |
9353 | #, fuzzy | 9225 | #, fuzzy |
9354 | msgid "Must specify valid IPv4 address" | 9226 | msgid "Must specify valid IPv4 address" |
9355 | msgstr "«%s» no es una dirección IP válida.\n" | 9227 | msgstr "«%s» no es una dirección IP válida.\n" |
9356 | 9228 | ||
9357 | #: src/vpn/gnunet-service-vpn.c:3053 | 9229 | #: src/vpn/gnunet-service-vpn.c:3056 |
9358 | msgid "Must specify valid IPv4 mask" | 9230 | msgid "Must specify valid IPv4 mask" |
9359 | msgstr "" | 9231 | msgstr "" |
9360 | 9232 | ||
9361 | #: src/vpn/gnunet-service-vpn.c:3063 | 9233 | #: src/vpn/gnunet-service-vpn.c:3066 |
9362 | msgid "IPv4 support disabled as this system does not support IPv4\n" | 9234 | msgid "IPv4 support disabled as this system does not support IPv4\n" |
9363 | msgstr "" | 9235 | msgstr "" |
9364 | "El soporte de IPv4 se deshabilita porque este sistema no soporta IPv4\n" | 9236 | "El soporte de IPv4 se deshabilita porque este sistema no soporta IPv4\n" |
@@ -9448,10 +9320,6 @@ msgstr "Violación externa del protocolo detectada en %s:%d.\n" | |||
9448 | msgid "`%s' failed on file `%s' at %s:%d with error: %s\n" | 9320 | msgid "`%s' failed on file `%s' at %s:%d with error: %s\n" |
9449 | msgstr "«%s» falló en el fichero «%s» en %s:%d con el error: %s\n" | 9321 | msgstr "«%s» falló en el fichero «%s» en %s:%d con el error: %s\n" |
9450 | 9322 | ||
9451 | #, fuzzy | ||
9452 | #~ msgid "Token `%s' is malformed\n" | ||
9453 | #~ msgstr "El bloque del tipo %u está mal formado\n" | ||
9454 | |||
9455 | #~ msgid "Failed to create indices\n" | 9323 | #~ msgid "Failed to create indices\n" |
9456 | #~ msgstr "Se produjo un fallo al crear los índices\n" | 9324 | #~ msgstr "Se produjo un fallo al crear los índices\n" |
9457 | 9325 | ||
@@ -7,7 +7,7 @@ msgid "" | |||
7 | msgstr "" | 7 | msgstr "" |
8 | "Project-Id-Version: gnunet 0.10.1\n" | 8 | "Project-Id-Version: gnunet 0.10.1\n" |
9 | "Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n" | 9 | "Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n" |
10 | "POT-Creation-Date: 2017-10-20 15:14+0000\n" | 10 | "POT-Creation-Date: 2018-01-02 02:33+0100\n" |
11 | "PO-Revision-Date: 2015-12-24 01:20+0100\n" | 11 | "PO-Revision-Date: 2015-12-24 01:20+0100\n" |
12 | "Last-Translator: Stéphane Aulery <lkppo@free.fr>\n" | 12 | "Last-Translator: Stéphane Aulery <lkppo@free.fr>\n" |
13 | "Language-Team: French <traduc@traduc.org>\n" | 13 | "Language-Team: French <traduc@traduc.org>\n" |
@@ -239,14 +239,14 @@ msgid "Require valid port number for service `%s' in configuration!\n" | |||
239 | msgstr "" | 239 | msgstr "" |
240 | 240 | ||
241 | #: src/arm/gnunet-service-arm.c:430 src/transport/plugin_transport_tcp.c:1176 | 241 | #: src/arm/gnunet-service-arm.c:430 src/transport/plugin_transport_tcp.c:1176 |
242 | #: src/transport/tcp_service_legacy.c:613 src/util/client.c:480 | 242 | #: src/transport/tcp_service_legacy.c:613 src/util/client.c:505 |
243 | #: src/util/service.c:682 | 243 | #: src/util/service.c:682 |
244 | #, c-format | 244 | #, c-format |
245 | msgid "UNIXPATH `%s' too long, maximum length is %llu\n" | 245 | msgid "UNIXPATH `%s' too long, maximum length is %llu\n" |
246 | msgstr "" | 246 | msgstr "" |
247 | 247 | ||
248 | #: src/arm/gnunet-service-arm.c:434 src/transport/plugin_transport_tcp.c:1180 | 248 | #: src/arm/gnunet-service-arm.c:434 src/transport/plugin_transport_tcp.c:1180 |
249 | #: src/transport/tcp_service_legacy.c:617 src/util/client.c:485 | 249 | #: src/transport/tcp_service_legacy.c:617 src/util/client.c:510 |
250 | #: src/util/service.c:687 | 250 | #: src/util/service.c:687 |
251 | #, c-format | 251 | #, c-format |
252 | msgid "Using `%s' instead\n" | 252 | msgid "Using `%s' instead\n" |
@@ -348,14 +348,131 @@ msgstr "" | |||
348 | msgid "Initiating shutdown as requested by client.\n" | 348 | msgid "Initiating shutdown as requested by client.\n" |
349 | msgstr "" | 349 | msgstr "" |
350 | 350 | ||
351 | #: src/ats-tests/ats-testing-log.c:837 | 351 | #: src/ats/gnunet-ats-solver-eval.c:2781 src/ats/gnunet-ats-solver-eval.c:2822 |
352 | msgid "Stop logging\n" | 352 | #, c-format |
353 | msgstr "Arrêter la journalisation\n" | 353 | msgid "" |
354 | "Could not load quota for network `%s': `%s', assigning default bandwidth " | ||
355 | "%llu\n" | ||
356 | msgstr "" | ||
354 | 357 | ||
355 | #: src/ats-tests/ats-testing-log.c:892 | 358 | #: src/ats/gnunet-ats-solver-eval.c:2799 |
356 | #, c-format | 359 | #, c-format |
357 | msgid "Start logging `%s'\n" | 360 | msgid "" |
358 | msgstr "Démarrer la journalisation « %s »\n" | 361 | "No outbound quota configured for network `%s', assigning default bandwidth " |
362 | "%llu\n" | ||
363 | msgstr "" | ||
364 | |||
365 | #: src/ats/gnunet-ats-solver-eval.c:2840 | ||
366 | #, c-format | ||
367 | msgid "" | ||
368 | "No outbound quota configure for network `%s', assigning default bandwidth " | ||
369 | "%llu\n" | ||
370 | msgstr "" | ||
371 | |||
372 | #: src/ats/gnunet-ats-solver-eval.c:3294 src/ats-tests/gnunet-solver-eval.c:939 | ||
373 | msgid "solver to use" | ||
374 | msgstr "solveur utilisé" | ||
375 | |||
376 | #: src/ats/gnunet-ats-solver-eval.c:3299 src/ats-tests/gnunet-solver-eval.c:945 | ||
377 | #: src/ats-tests/gnunet-solver-eval.c:950 | ||
378 | msgid "experiment to use" | ||
379 | msgstr "" | ||
380 | |||
381 | #: src/ats/gnunet-ats-solver-eval.c:3306 | ||
382 | msgid "print logging" | ||
383 | msgstr "afficher le journal" | ||
384 | |||
385 | #: src/ats/gnunet-ats-solver-eval.c:3311 | ||
386 | msgid "save logging to disk" | ||
387 | msgstr "" | ||
388 | |||
389 | #: src/ats/gnunet-ats-solver-eval.c:3316 | ||
390 | msgid "disable normalization" | ||
391 | msgstr "" | ||
392 | |||
393 | #: src/ats/gnunet-service-ats_plugins.c:304 | ||
394 | #, c-format | ||
395 | msgid "" | ||
396 | "Could not load %s quota for network `%s': `%s', assigning default bandwidth " | ||
397 | "%llu\n" | ||
398 | msgstr "" | ||
399 | |||
400 | #: src/ats/gnunet-service-ats_plugins.c:314 | ||
401 | #, c-format | ||
402 | msgid "%s quota configured for network `%s' is %llu\n" | ||
403 | msgstr "" | ||
404 | |||
405 | #: src/ats/gnunet-service-ats_plugins.c:359 | ||
406 | #, c-format | ||
407 | msgid "" | ||
408 | "No %s-quota configured for network `%s', assigning default bandwidth %llu\n" | ||
409 | msgstr "" | ||
410 | |||
411 | #: src/ats/gnunet-service-ats_plugins.c:451 | ||
412 | #, c-format | ||
413 | msgid "Failed to initialize solver `%s'!\n" | ||
414 | msgstr "" | ||
415 | |||
416 | #: src/ats/plugin_ats_mlp.c:1274 | ||
417 | msgid "Problem size too large, cannot allocate memory!\n" | ||
418 | msgstr "" | ||
419 | |||
420 | #: src/ats/plugin_ats_mlp.c:1869 | ||
421 | #, c-format | ||
422 | msgid "Adding address for peer `%s' multiple times\n" | ||
423 | msgstr "" | ||
424 | |||
425 | #: src/ats/plugin_ats_mlp.c:1913 | ||
426 | #, c-format | ||
427 | msgid "Updating address property for peer `%s' %p not added before\n" | ||
428 | msgstr "" | ||
429 | |||
430 | #: src/ats/plugin_ats_mlp.c:2475 | ||
431 | msgid "" | ||
432 | "MLP solver is not optimizing for anything, changing to feasibility check\n" | ||
433 | msgstr "" | ||
434 | |||
435 | #: src/ats/plugin_ats_mlp.c:2515 src/ats/plugin_ats_mlp.c:2532 | ||
436 | #: src/ats/plugin_ats_mlp.c:2564 src/ats/plugin_ats_mlp.c:2582 | ||
437 | #: src/ats/plugin_ats_mlp.c:2601 src/ats/plugin_ats_proportional.c:1141 | ||
438 | #: src/ats/plugin_ats_ril.c:2612 src/ats/plugin_ats_ril.c:2629 | ||
439 | #: src/ats/plugin_ats_ril.c:2646 src/ats/plugin_ats_ril.c:2663 | ||
440 | #: src/ats/plugin_ats_ril.c:2680 src/ats/plugin_ats_ril.c:2697 | ||
441 | #: src/ats/plugin_ats_ril.c:2714 src/ats/plugin_ats_ril.c:2731 | ||
442 | #, fuzzy, c-format | ||
443 | msgid "Invalid %s configuration %f \n" | ||
444 | msgstr "fornat invalide : « %s »\n" | ||
445 | |||
446 | #: src/ats/plugin_ats_mlp.c:2670 | ||
447 | #, c-format | ||
448 | msgid "" | ||
449 | "Adjusting inconsistent outbound quota configuration for network `%s', is " | ||
450 | "%llu must be at least %llu\n" | ||
451 | msgstr "" | ||
452 | |||
453 | #: src/ats/plugin_ats_mlp.c:2679 | ||
454 | #, c-format | ||
455 | msgid "" | ||
456 | "Adjusting inconsistent inbound quota configuration for network `%s', is %llu " | ||
457 | "must be at least %llu\n" | ||
458 | msgstr "" | ||
459 | |||
460 | #: src/ats/plugin_ats_mlp.c:2689 | ||
461 | #, c-format | ||
462 | msgid "" | ||
463 | "Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n" | ||
464 | msgstr "" | ||
465 | |||
466 | #: src/ats/plugin_ats_mlp.c:2698 | ||
467 | #, c-format | ||
468 | msgid "" | ||
469 | "Adjusting inbound quota configuration for network `%s' from %llu to %.0f\n" | ||
470 | msgstr "" | ||
471 | |||
472 | #: src/ats/plugin_ats_proportional.c:1164 | ||
473 | #, fuzzy, c-format | ||
474 | msgid "Invalid %s configuration %f\n" | ||
475 | msgstr "fornat invalide : « %s »\n" | ||
359 | 476 | ||
360 | #: src/ats-tests/ats-testing.c:422 | 477 | #: src/ats-tests/ats-testing.c:422 |
361 | #, c-format | 478 | #, c-format |
@@ -367,6 +484,15 @@ msgstr "" | |||
367 | msgid "Failed to connect master peer [%u] with slave [%u]\n" | 484 | msgid "Failed to connect master peer [%u] with slave [%u]\n" |
368 | msgstr "" | 485 | msgstr "" |
369 | 486 | ||
487 | #: src/ats-tests/ats-testing-log.c:837 | ||
488 | msgid "Stop logging\n" | ||
489 | msgstr "Arrêter la journalisation\n" | ||
490 | |||
491 | #: src/ats-tests/ats-testing-log.c:892 | ||
492 | #, c-format | ||
493 | msgid "Start logging `%s'\n" | ||
494 | msgstr "Démarrer la journalisation « %s »\n" | ||
495 | |||
370 | #: src/ats-tests/gnunet-ats-sim.c:90 | 496 | #: src/ats-tests/gnunet-ats-sim.c:90 |
371 | #, c-format | 497 | #, c-format |
372 | msgid "" | 498 | msgid "" |
@@ -374,15 +500,6 @@ msgid "" | |||
374 | "= %u KiB/s\n" | 500 | "= %u KiB/s\n" |
375 | msgstr "" | 501 | msgstr "" |
376 | 502 | ||
377 | #: src/ats-tests/gnunet-solver-eval.c:939 src/ats/gnunet-ats-solver-eval.c:3294 | ||
378 | msgid "solver to use" | ||
379 | msgstr "solveur utilisé" | ||
380 | |||
381 | #: src/ats-tests/gnunet-solver-eval.c:945 | ||
382 | #: src/ats-tests/gnunet-solver-eval.c:950 src/ats/gnunet-ats-solver-eval.c:3299 | ||
383 | msgid "experiment to use" | ||
384 | msgstr "" | ||
385 | |||
386 | #: src/ats-tool/gnunet-ats.c:307 | 503 | #: src/ats-tool/gnunet-ats.c:307 |
387 | #, c-format | 504 | #, c-format |
388 | msgid "%u address resolutions had a timeout\n" | 505 | msgid "%u address resolutions had a timeout\n" |
@@ -498,123 +615,6 @@ msgstr "" | |||
498 | msgid "Print information about ATS state" | 615 | msgid "Print information about ATS state" |
499 | msgstr "" | 616 | msgstr "" |
500 | 617 | ||
501 | #: src/ats/gnunet-ats-solver-eval.c:2781 src/ats/gnunet-ats-solver-eval.c:2822 | ||
502 | #, c-format | ||
503 | msgid "" | ||
504 | "Could not load quota for network `%s': `%s', assigning default bandwidth " | ||
505 | "%llu\n" | ||
506 | msgstr "" | ||
507 | |||
508 | #: src/ats/gnunet-ats-solver-eval.c:2799 | ||
509 | #, c-format | ||
510 | msgid "" | ||
511 | "No outbound quota configured for network `%s', assigning default bandwidth " | ||
512 | "%llu\n" | ||
513 | msgstr "" | ||
514 | |||
515 | #: src/ats/gnunet-ats-solver-eval.c:2840 | ||
516 | #, c-format | ||
517 | msgid "" | ||
518 | "No outbound quota configure for network `%s', assigning default bandwidth " | ||
519 | "%llu\n" | ||
520 | msgstr "" | ||
521 | |||
522 | #: src/ats/gnunet-ats-solver-eval.c:3306 | ||
523 | msgid "print logging" | ||
524 | msgstr "afficher le journal" | ||
525 | |||
526 | #: src/ats/gnunet-ats-solver-eval.c:3311 | ||
527 | msgid "save logging to disk" | ||
528 | msgstr "" | ||
529 | |||
530 | #: src/ats/gnunet-ats-solver-eval.c:3316 | ||
531 | msgid "disable normalization" | ||
532 | msgstr "" | ||
533 | |||
534 | #: src/ats/gnunet-service-ats_plugins.c:304 | ||
535 | #, c-format | ||
536 | msgid "" | ||
537 | "Could not load %s quota for network `%s': `%s', assigning default bandwidth " | ||
538 | "%llu\n" | ||
539 | msgstr "" | ||
540 | |||
541 | #: src/ats/gnunet-service-ats_plugins.c:314 | ||
542 | #, c-format | ||
543 | msgid "%s quota configured for network `%s' is %llu\n" | ||
544 | msgstr "" | ||
545 | |||
546 | #: src/ats/gnunet-service-ats_plugins.c:359 | ||
547 | #, c-format | ||
548 | msgid "" | ||
549 | "No %s-quota configured for network `%s', assigning default bandwidth %llu\n" | ||
550 | msgstr "" | ||
551 | |||
552 | #: src/ats/gnunet-service-ats_plugins.c:451 | ||
553 | #, c-format | ||
554 | msgid "Failed to initialize solver `%s'!\n" | ||
555 | msgstr "" | ||
556 | |||
557 | #: src/ats/plugin_ats_mlp.c:1274 | ||
558 | msgid "Problem size too large, cannot allocate memory!\n" | ||
559 | msgstr "" | ||
560 | |||
561 | #: src/ats/plugin_ats_mlp.c:1869 | ||
562 | #, c-format | ||
563 | msgid "Adding address for peer `%s' multiple times\n" | ||
564 | msgstr "" | ||
565 | |||
566 | #: src/ats/plugin_ats_mlp.c:1913 | ||
567 | #, c-format | ||
568 | msgid "Updating address property for peer `%s' %p not added before\n" | ||
569 | msgstr "" | ||
570 | |||
571 | #: src/ats/plugin_ats_mlp.c:2475 | ||
572 | msgid "" | ||
573 | "MLP solver is not optimizing for anything, changing to feasibility check\n" | ||
574 | msgstr "" | ||
575 | |||
576 | #: src/ats/plugin_ats_mlp.c:2515 src/ats/plugin_ats_mlp.c:2532 | ||
577 | #: src/ats/plugin_ats_mlp.c:2564 src/ats/plugin_ats_mlp.c:2582 | ||
578 | #: src/ats/plugin_ats_mlp.c:2601 src/ats/plugin_ats_proportional.c:1141 | ||
579 | #: src/ats/plugin_ats_ril.c:2612 src/ats/plugin_ats_ril.c:2629 | ||
580 | #: src/ats/plugin_ats_ril.c:2646 src/ats/plugin_ats_ril.c:2663 | ||
581 | #: src/ats/plugin_ats_ril.c:2680 src/ats/plugin_ats_ril.c:2697 | ||
582 | #: src/ats/plugin_ats_ril.c:2714 src/ats/plugin_ats_ril.c:2731 | ||
583 | #, fuzzy, c-format | ||
584 | msgid "Invalid %s configuration %f \n" | ||
585 | msgstr "fornat invalide : « %s »\n" | ||
586 | |||
587 | #: src/ats/plugin_ats_mlp.c:2670 | ||
588 | #, c-format | ||
589 | msgid "" | ||
590 | "Adjusting inconsistent outbound quota configuration for network `%s', is " | ||
591 | "%llu must be at least %llu\n" | ||
592 | msgstr "" | ||
593 | |||
594 | #: src/ats/plugin_ats_mlp.c:2679 | ||
595 | #, c-format | ||
596 | msgid "" | ||
597 | "Adjusting inconsistent inbound quota configuration for network `%s', is %llu " | ||
598 | "must be at least %llu\n" | ||
599 | msgstr "" | ||
600 | |||
601 | #: src/ats/plugin_ats_mlp.c:2689 | ||
602 | #, c-format | ||
603 | msgid "" | ||
604 | "Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n" | ||
605 | msgstr "" | ||
606 | |||
607 | #: src/ats/plugin_ats_mlp.c:2698 | ||
608 | #, c-format | ||
609 | msgid "" | ||
610 | "Adjusting inbound quota configuration for network `%s' from %llu to %.0f\n" | ||
611 | msgstr "" | ||
612 | |||
613 | #: src/ats/plugin_ats_proportional.c:1164 | ||
614 | #, fuzzy, c-format | ||
615 | msgid "Invalid %s configuration %f\n" | ||
616 | msgstr "fornat invalide : « %s »\n" | ||
617 | |||
618 | #: src/auction/gnunet-auction-create.c:163 | 618 | #: src/auction/gnunet-auction-create.c:163 |
619 | msgid "description of the item to be sold" | 619 | msgid "description of the item to be sold" |
620 | msgstr "" | 620 | msgstr "" |
@@ -661,53 +661,53 @@ msgstr "" | |||
661 | msgid "Invalid peer ID `%s'\n" | 661 | msgid "Invalid peer ID `%s'\n" |
662 | msgstr "" | 662 | msgstr "" |
663 | 663 | ||
664 | #: src/cadet/gnunet-cadet.c:702 | 664 | #: src/cadet/gnunet-cadet.c:703 |
665 | #, c-format | 665 | #, c-format |
666 | msgid "Invalid tunnel owner `%s'\n" | 666 | msgid "Invalid tunnel owner `%s'\n" |
667 | msgstr "" | 667 | msgstr "" |
668 | 668 | ||
669 | #: src/cadet/gnunet-cadet.c:775 | 669 | #: src/cadet/gnunet-cadet.c:776 |
670 | msgid "Extra arguments are not applicable in combination with this option.\n" | 670 | msgid "Extra arguments are not applicable in combination with this option.\n" |
671 | msgstr "" | 671 | msgstr "" |
672 | 672 | ||
673 | #: src/cadet/gnunet-cadet.c:866 | 673 | #: src/cadet/gnunet-cadet.c:867 |
674 | #, c-format | 674 | #, c-format |
675 | msgid "Invalid target `%s'\n" | 675 | msgid "Invalid target `%s'\n" |
676 | msgstr "" | 676 | msgstr "" |
677 | 677 | ||
678 | #: src/cadet/gnunet-cadet.c:903 | 678 | #: src/cadet/gnunet-cadet.c:904 |
679 | msgid "No action requested\n" | 679 | msgid "No action requested\n" |
680 | msgstr "" | 680 | msgstr "" |
681 | 681 | ||
682 | #: src/cadet/gnunet-cadet.c:928 | 682 | #: src/cadet/gnunet-cadet.c:929 |
683 | msgid "Provide information about a particular connection" | 683 | msgid "Provide information about a particular connection" |
684 | msgstr "" | 684 | msgstr "" |
685 | 685 | ||
686 | #: src/cadet/gnunet-cadet.c:933 | 686 | #: src/cadet/gnunet-cadet.c:934 |
687 | msgid "Activate echo mode" | 687 | msgid "Activate echo mode" |
688 | msgstr "" | 688 | msgstr "" |
689 | 689 | ||
690 | #: src/cadet/gnunet-cadet.c:938 | 690 | #: src/cadet/gnunet-cadet.c:939 |
691 | msgid "Dump debug information to STDERR" | 691 | msgid "Dump debug information to STDERR" |
692 | msgstr "" | 692 | msgstr "" |
693 | 693 | ||
694 | #: src/cadet/gnunet-cadet.c:944 | 694 | #: src/cadet/gnunet-cadet.c:945 |
695 | msgid "Listen for connections using a shared secret among sender and recipient" | 695 | msgid "Listen for connections using a shared secret among sender and recipient" |
696 | msgstr "" | 696 | msgstr "" |
697 | 697 | ||
698 | #: src/cadet/gnunet-cadet.c:951 | 698 | #: src/cadet/gnunet-cadet.c:952 |
699 | msgid "Provide information about a patricular peer" | 699 | msgid "Provide information about a patricular peer" |
700 | msgstr "" | 700 | msgstr "" |
701 | 701 | ||
702 | #: src/cadet/gnunet-cadet.c:957 | 702 | #: src/cadet/gnunet-cadet.c:958 |
703 | msgid "Provide information about all peers" | 703 | msgid "Provide information about all peers" |
704 | msgstr "" | 704 | msgstr "" |
705 | 705 | ||
706 | #: src/cadet/gnunet-cadet.c:963 | 706 | #: src/cadet/gnunet-cadet.c:964 |
707 | msgid "Provide information about a particular tunnel" | 707 | msgid "Provide information about a particular tunnel" |
708 | msgstr "" | 708 | msgstr "" |
709 | 709 | ||
710 | #: src/cadet/gnunet-cadet.c:969 | 710 | #: src/cadet/gnunet-cadet.c:970 |
711 | msgid "Provide information about all tunnels" | 711 | msgid "Provide information about all tunnels" |
712 | msgstr "" | 712 | msgstr "" |
713 | 713 | ||
@@ -753,28 +753,6 @@ msgstr "" | |||
753 | msgid "Connection to conversation service lost, trying to reconnect\n" | 753 | msgid "Connection to conversation service lost, trying to reconnect\n" |
754 | msgstr "" | 754 | msgstr "" |
755 | 755 | ||
756 | #: src/conversation/gnunet-conversation-test.c:119 | ||
757 | #, c-format | ||
758 | msgid "" | ||
759 | "\n" | ||
760 | "End of transmission. Have a GNU day.\n" | ||
761 | msgstr "" | ||
762 | |||
763 | #: src/conversation/gnunet-conversation-test.c:145 | ||
764 | #, c-format | ||
765 | msgid "" | ||
766 | "\n" | ||
767 | "We are now playing your recording back. If you can hear it, your audio " | ||
768 | "settings are working..." | ||
769 | msgstr "" | ||
770 | |||
771 | #: src/conversation/gnunet-conversation-test.c:210 | ||
772 | #, c-format | ||
773 | msgid "" | ||
774 | "We will now be recording you for %s. After that time, the recording will be " | ||
775 | "played back to you..." | ||
776 | msgstr "" | ||
777 | |||
778 | #: src/conversation/gnunet-conversation.c:269 | 756 | #: src/conversation/gnunet-conversation.c:269 |
779 | #, c-format | 757 | #, c-format |
780 | msgid "Incoming call from `%s'. Please /accept %u or /cancel %u the call.\n" | 758 | msgid "Incoming call from `%s'. Please /accept %u or /cancel %u the call.\n" |
@@ -1028,8 +1006,30 @@ msgstr "" | |||
1028 | msgid "Enables having a conversation with other GNUnet users." | 1006 | msgid "Enables having a conversation with other GNUnet users." |
1029 | msgstr "" | 1007 | msgstr "" |
1030 | 1008 | ||
1031 | #: src/conversation/gnunet-helper-audio-playback-gst.c:356 | 1009 | #: src/conversation/gnunet-conversation-test.c:119 |
1010 | #, c-format | ||
1011 | msgid "" | ||
1012 | "\n" | ||
1013 | "End of transmission. Have a GNU day.\n" | ||
1014 | msgstr "" | ||
1015 | |||
1016 | #: src/conversation/gnunet-conversation-test.c:145 | ||
1017 | #, c-format | ||
1018 | msgid "" | ||
1019 | "\n" | ||
1020 | "We are now playing your recording back. If you can hear it, your audio " | ||
1021 | "settings are working..." | ||
1022 | msgstr "" | ||
1023 | |||
1024 | #: src/conversation/gnunet-conversation-test.c:210 | ||
1025 | #, c-format | ||
1026 | msgid "" | ||
1027 | "We will now be recording you for %s. After that time, the recording will be " | ||
1028 | "played back to you..." | ||
1029 | msgstr "" | ||
1030 | |||
1032 | #: src/conversation/gnunet_gst.c:622 | 1031 | #: src/conversation/gnunet_gst.c:622 |
1032 | #: src/conversation/gnunet-helper-audio-playback-gst.c:361 | ||
1033 | #, c-format | 1033 | #, c-format |
1034 | msgid "Read error from STDIN: %d %s\n" | 1034 | msgid "Read error from STDIN: %d %s\n" |
1035 | msgstr "" | 1035 | msgstr "" |
@@ -1039,59 +1039,59 @@ msgstr "" | |||
1039 | msgid "pa_stream_write() failed: %s\n" | 1039 | msgid "pa_stream_write() failed: %s\n" |
1040 | msgstr "pa_stream_write() échoué : %s\n" | 1040 | msgstr "pa_stream_write() échoué : %s\n" |
1041 | 1041 | ||
1042 | #: src/conversation/gnunet-helper-audio-playback.c:607 | 1042 | #: src/conversation/gnunet-helper-audio-playback.c:612 |
1043 | msgid "gnunet-helper-audio-playback - Got signal, exiting\n" | 1043 | msgid "gnunet-helper-audio-playback - Got signal, exiting\n" |
1044 | msgstr "" | 1044 | msgstr "" |
1045 | 1045 | ||
1046 | #: src/conversation/gnunet-helper-audio-playback.c:632 | 1046 | #: src/conversation/gnunet-helper-audio-playback.c:637 |
1047 | #: src/conversation/gnunet-helper-audio-record.c:545 | 1047 | #: src/conversation/gnunet-helper-audio-record.c:545 |
1048 | msgid "Connection established.\n" | 1048 | msgid "Connection established.\n" |
1049 | msgstr "" | 1049 | msgstr "" |
1050 | 1050 | ||
1051 | #: src/conversation/gnunet-helper-audio-playback.c:637 | 1051 | #: src/conversation/gnunet-helper-audio-playback.c:642 |
1052 | #: src/conversation/gnunet-helper-audio-record.c:550 | 1052 | #: src/conversation/gnunet-helper-audio-record.c:550 |
1053 | #, c-format | 1053 | #, c-format |
1054 | msgid "pa_stream_new() failed: %s\n" | 1054 | msgid "pa_stream_new() failed: %s\n" |
1055 | msgstr "pa_stream_new() échoué : %s\n" | 1055 | msgstr "pa_stream_new() échoué : %s\n" |
1056 | 1056 | ||
1057 | #: src/conversation/gnunet-helper-audio-playback.c:651 | 1057 | #: src/conversation/gnunet-helper-audio-playback.c:656 |
1058 | #, c-format | 1058 | #, c-format |
1059 | msgid "pa_stream_connect_playback() failed: %s\n" | 1059 | msgid "pa_stream_connect_playback() failed: %s\n" |
1060 | msgstr "pa_stream_connect_playback() échoué : %s\n" | 1060 | msgstr "pa_stream_connect_playback() échoué : %s\n" |
1061 | 1061 | ||
1062 | #: src/conversation/gnunet-helper-audio-playback.c:664 | 1062 | #: src/conversation/gnunet-helper-audio-playback.c:669 |
1063 | #: src/conversation/gnunet-helper-audio-record.c:576 | 1063 | #: src/conversation/gnunet-helper-audio-record.c:576 |
1064 | #, c-format | 1064 | #, c-format |
1065 | msgid "Connection failure: %s\n" | 1065 | msgid "Connection failure: %s\n" |
1066 | msgstr "" | 1066 | msgstr "" |
1067 | 1067 | ||
1068 | #: src/conversation/gnunet-helper-audio-playback.c:685 | 1068 | #: src/conversation/gnunet-helper-audio-playback.c:690 |
1069 | #: src/conversation/gnunet-helper-audio-record.c:599 | 1069 | #: src/conversation/gnunet-helper-audio-record.c:599 |
1070 | msgid "Wrong Spec\n" | 1070 | msgid "Wrong Spec\n" |
1071 | msgstr "Spécification incorrecte\n" | 1071 | msgstr "Spécification incorrecte\n" |
1072 | 1072 | ||
1073 | #: src/conversation/gnunet-helper-audio-playback.c:691 | 1073 | #: src/conversation/gnunet-helper-audio-playback.c:696 |
1074 | #: src/conversation/gnunet-helper-audio-record.c:605 | 1074 | #: src/conversation/gnunet-helper-audio-record.c:605 |
1075 | msgid "pa_mainloop_new() failed.\n" | 1075 | msgid "pa_mainloop_new() failed.\n" |
1076 | msgstr "pa_mainloop_new() échoué.\n" | 1076 | msgstr "pa_mainloop_new() échoué.\n" |
1077 | 1077 | ||
1078 | #: src/conversation/gnunet-helper-audio-playback.c:705 | 1078 | #: src/conversation/gnunet-helper-audio-playback.c:710 |
1079 | #: src/conversation/gnunet-helper-audio-record.c:620 | 1079 | #: src/conversation/gnunet-helper-audio-record.c:620 |
1080 | msgid "pa_context_new() failed.\n" | 1080 | msgid "pa_context_new() failed.\n" |
1081 | msgstr "pa_context_new() échoué.\n" | 1081 | msgstr "pa_context_new() échoué.\n" |
1082 | 1082 | ||
1083 | #: src/conversation/gnunet-helper-audio-playback.c:712 | 1083 | #: src/conversation/gnunet-helper-audio-playback.c:717 |
1084 | #: src/conversation/gnunet-helper-audio-record.c:626 | 1084 | #: src/conversation/gnunet-helper-audio-record.c:626 |
1085 | #, c-format | 1085 | #, c-format |
1086 | msgid "pa_context_connect() failed: %s\n" | 1086 | msgid "pa_context_connect() failed: %s\n" |
1087 | msgstr "pa_context_connect() échoué : %s\n" | 1087 | msgstr "pa_context_connect() échoué : %s\n" |
1088 | 1088 | ||
1089 | #: src/conversation/gnunet-helper-audio-playback.c:718 | 1089 | #: src/conversation/gnunet-helper-audio-playback.c:723 |
1090 | #: src/conversation/gnunet-helper-audio-record.c:632 | 1090 | #: src/conversation/gnunet-helper-audio-record.c:632 |
1091 | msgid "pa_mainloop_run() failed.\n" | 1091 | msgid "pa_mainloop_run() failed.\n" |
1092 | msgstr "pa_mainloop_run() échoué.\n" | 1092 | msgstr "pa_mainloop_run() échoué.\n" |
1093 | 1093 | ||
1094 | #: src/conversation/gnunet-helper-audio-playback.c:790 | 1094 | #: src/conversation/gnunet-helper-audio-playback.c:795 |
1095 | #, c-format | 1095 | #, c-format |
1096 | msgid "Read error from STDIN: %s\n" | 1096 | msgid "Read error from STDIN: %s\n" |
1097 | msgstr "" | 1097 | msgstr "" |
@@ -1158,7 +1158,7 @@ msgstr "" | |||
1158 | msgid "Could not open line, port %s already in use!\n" | 1158 | msgid "Could not open line, port %s already in use!\n" |
1159 | msgstr "" | 1159 | msgstr "" |
1160 | 1160 | ||
1161 | #: src/conversation/microphone.c:119 | 1161 | #: src/conversation/microphone.c:121 |
1162 | msgid "Could not start record audio helper\n" | 1162 | msgid "Could not start record audio helper\n" |
1163 | msgstr "" | 1163 | msgstr "" |
1164 | 1164 | ||
@@ -1241,25 +1241,25 @@ msgstr "" | |||
1241 | msgid "# dequeuing CAR (duplicate request)" | 1241 | msgid "# dequeuing CAR (duplicate request)" |
1242 | msgstr "" | 1242 | msgstr "" |
1243 | 1243 | ||
1244 | #: src/core/gnunet-service-core.c:440 | 1244 | #: src/core/gnunet-service-core.c:443 |
1245 | #, c-format | 1245 | #, c-format |
1246 | msgid "# bytes of messages of type %u received" | 1246 | msgid "# bytes of messages of type %u received" |
1247 | msgstr "" | 1247 | msgstr "" |
1248 | 1248 | ||
1249 | #: src/core/gnunet-service-core.c:538 | 1249 | #: src/core/gnunet-service-core.c:541 |
1250 | msgid "# messages discarded (session disconnected)" | 1250 | msgid "# messages discarded (session disconnected)" |
1251 | msgstr "" | 1251 | msgstr "" |
1252 | 1252 | ||
1253 | #: src/core/gnunet-service-core.c:876 | 1253 | #: src/core/gnunet-service-core.c:879 |
1254 | #, c-format | 1254 | #, c-format |
1255 | msgid "# messages of type %u discarded (client busy)" | 1255 | msgid "# messages of type %u discarded (client busy)" |
1256 | msgstr "" | 1256 | msgstr "" |
1257 | 1257 | ||
1258 | #: src/core/gnunet-service-core.c:985 | 1258 | #: src/core/gnunet-service-core.c:988 |
1259 | msgid "Core service is lacking HOSTKEY configuration setting. Exiting.\n" | 1259 | msgid "Core service is lacking HOSTKEY configuration setting. Exiting.\n" |
1260 | msgstr "" | 1260 | msgstr "" |
1261 | 1261 | ||
1262 | #: src/core/gnunet-service-core.c:1006 | 1262 | #: src/core/gnunet-service-core.c:1009 |
1263 | #, c-format | 1263 | #, c-format |
1264 | msgid "Core service of `%s' ready.\n" | 1264 | msgid "Core service of `%s' ready.\n" |
1265 | msgstr "" | 1265 | msgstr "" |
@@ -1272,124 +1272,124 @@ msgstr "" | |||
1272 | msgid "# bytes decrypted" | 1272 | msgid "# bytes decrypted" |
1273 | msgstr "" | 1273 | msgstr "" |
1274 | 1274 | ||
1275 | #: src/core/gnunet-service-core_kx.c:725 | 1275 | #: src/core/gnunet-service-core_kx.c:728 |
1276 | msgid "# PAYLOAD dropped (out of order)" | 1276 | msgid "# PAYLOAD dropped (out of order)" |
1277 | msgstr "" | 1277 | msgstr "" |
1278 | 1278 | ||
1279 | #: src/core/gnunet-service-core_kx.c:775 | 1279 | #: src/core/gnunet-service-core_kx.c:778 |
1280 | msgid "# key exchanges initiated" | 1280 | msgid "# key exchanges initiated" |
1281 | msgstr "" | 1281 | msgstr "" |
1282 | 1282 | ||
1283 | #: src/core/gnunet-service-core_kx.c:837 | 1283 | #: src/core/gnunet-service-core_kx.c:840 |
1284 | msgid "# key exchanges stopped" | 1284 | msgid "# key exchanges stopped" |
1285 | msgstr "" | 1285 | msgstr "" |
1286 | 1286 | ||
1287 | #: src/core/gnunet-service-core_kx.c:871 | 1287 | #: src/core/gnunet-service-core_kx.c:874 |
1288 | msgid "# PING messages transmitted" | 1288 | msgid "# PING messages transmitted" |
1289 | msgstr "" | 1289 | msgstr "" |
1290 | 1290 | ||
1291 | #: src/core/gnunet-service-core_kx.c:938 | 1291 | #: src/core/gnunet-service-core_kx.c:941 |
1292 | msgid "# old ephemeral keys ignored" | 1292 | msgid "# old ephemeral keys ignored" |
1293 | msgstr "" | 1293 | msgstr "" |
1294 | 1294 | ||
1295 | #: src/core/gnunet-service-core_kx.c:945 | 1295 | #: src/core/gnunet-service-core_kx.c:948 |
1296 | msgid "# ephemeral keys received" | 1296 | msgid "# ephemeral keys received" |
1297 | msgstr "" | 1297 | msgstr "" |
1298 | 1298 | ||
1299 | #: src/core/gnunet-service-core_kx.c:984 | 1299 | #: src/core/gnunet-service-core_kx.c:987 |
1300 | #, c-format | 1300 | #, c-format |
1301 | msgid "" | 1301 | msgid "" |
1302 | "Ephemeral key message from peer `%s' rejected as its validity range does not " | 1302 | "Ephemeral key message from peer `%s' rejected as its validity range does not " |
1303 | "match our system time (%llu not in [%llu,%llu]).\n" | 1303 | "match our system time (%llu not in [%llu,%llu]).\n" |
1304 | msgstr "" | 1304 | msgstr "" |
1305 | 1305 | ||
1306 | #: src/core/gnunet-service-core_kx.c:995 | 1306 | #: src/core/gnunet-service-core_kx.c:998 |
1307 | msgid "# EPHEMERAL_KEY messages received" | 1307 | msgid "# EPHEMERAL_KEY messages received" |
1308 | msgstr "" | 1308 | msgstr "" |
1309 | 1309 | ||
1310 | #: src/core/gnunet-service-core_kx.c:1091 | 1310 | #: src/core/gnunet-service-core_kx.c:1094 |
1311 | #: src/transport/gnunet-service-transport_validation.c:1119 | 1311 | #: src/transport/gnunet-service-transport_validation.c:1128 |
1312 | msgid "# PING messages received" | 1312 | msgid "# PING messages received" |
1313 | msgstr "" | 1313 | msgstr "" |
1314 | 1314 | ||
1315 | #: src/core/gnunet-service-core_kx.c:1100 | 1315 | #: src/core/gnunet-service-core_kx.c:1103 |
1316 | msgid "# PING messages dropped (out of order)" | 1316 | msgid "# PING messages dropped (out of order)" |
1317 | msgstr "" | 1317 | msgstr "" |
1318 | 1318 | ||
1319 | #: src/core/gnunet-service-core_kx.c:1158 | 1319 | #: src/core/gnunet-service-core_kx.c:1161 |
1320 | msgid "# PONG messages created" | 1320 | msgid "# PONG messages created" |
1321 | msgstr "" | 1321 | msgstr "" |
1322 | 1322 | ||
1323 | #: src/core/gnunet-service-core_kx.c:1184 | 1323 | #: src/core/gnunet-service-core_kx.c:1187 |
1324 | msgid "# sessions terminated by timeout" | 1324 | msgid "# sessions terminated by timeout" |
1325 | msgstr "" | 1325 | msgstr "" |
1326 | 1326 | ||
1327 | #: src/core/gnunet-service-core_kx.c:1197 | 1327 | #: src/core/gnunet-service-core_kx.c:1200 |
1328 | msgid "# keepalive messages sent" | 1328 | msgid "# keepalive messages sent" |
1329 | msgstr "" | 1329 | msgstr "" |
1330 | 1330 | ||
1331 | #: src/core/gnunet-service-core_kx.c:1261 | 1331 | #: src/core/gnunet-service-core_kx.c:1264 |
1332 | #: src/transport/gnunet-service-transport_validation.c:1442 | 1332 | #: src/transport/gnunet-service-transport_validation.c:1461 |
1333 | msgid "# PONG messages received" | 1333 | msgid "# PONG messages received" |
1334 | msgstr "" | 1334 | msgstr "" |
1335 | 1335 | ||
1336 | #: src/core/gnunet-service-core_kx.c:1268 | 1336 | #: src/core/gnunet-service-core_kx.c:1271 |
1337 | msgid "# PONG messages dropped (connection down)" | 1337 | msgid "# PONG messages dropped (connection down)" |
1338 | msgstr "" | 1338 | msgstr "" |
1339 | 1339 | ||
1340 | #: src/core/gnunet-service-core_kx.c:1273 | 1340 | #: src/core/gnunet-service-core_kx.c:1276 |
1341 | msgid "# PONG messages dropped (out of order)" | 1341 | msgid "# PONG messages dropped (out of order)" |
1342 | msgstr "" | 1342 | msgstr "" |
1343 | 1343 | ||
1344 | #: src/core/gnunet-service-core_kx.c:1308 | 1344 | #: src/core/gnunet-service-core_kx.c:1311 |
1345 | msgid "# PONG messages decrypted" | 1345 | msgid "# PONG messages decrypted" |
1346 | msgstr "" | 1346 | msgstr "" |
1347 | 1347 | ||
1348 | #: src/core/gnunet-service-core_kx.c:1346 | 1348 | #: src/core/gnunet-service-core_kx.c:1349 |
1349 | msgid "# session keys confirmed via PONG" | 1349 | msgid "# session keys confirmed via PONG" |
1350 | msgstr "" | 1350 | msgstr "" |
1351 | 1351 | ||
1352 | #: src/core/gnunet-service-core_kx.c:1357 | 1352 | #: src/core/gnunet-service-core_kx.c:1360 |
1353 | msgid "# timeouts prevented via PONG" | 1353 | msgid "# timeouts prevented via PONG" |
1354 | msgstr "" | 1354 | msgstr "" |
1355 | 1355 | ||
1356 | #: src/core/gnunet-service-core_kx.c:1364 | 1356 | #: src/core/gnunet-service-core_kx.c:1367 |
1357 | msgid "# rekey operations confirmed via PONG" | 1357 | msgid "# rekey operations confirmed via PONG" |
1358 | msgstr "" | 1358 | msgstr "" |
1359 | 1359 | ||
1360 | #: src/core/gnunet-service-core_kx.c:1518 | 1360 | #: src/core/gnunet-service-core_kx.c:1521 |
1361 | msgid "# DATA message dropped (out of order)" | 1361 | msgid "# DATA message dropped (out of order)" |
1362 | msgstr "" | 1362 | msgstr "" |
1363 | 1363 | ||
1364 | #: src/core/gnunet-service-core_kx.c:1526 | 1364 | #: src/core/gnunet-service-core_kx.c:1529 |
1365 | #, c-format | 1365 | #, c-format |
1366 | msgid "" | 1366 | msgid "" |
1367 | "Session to peer `%s' went down due to key expiration (should not happen)\n" | 1367 | "Session to peer `%s' went down due to key expiration (should not happen)\n" |
1368 | msgstr "" | 1368 | msgstr "" |
1369 | 1369 | ||
1370 | #: src/core/gnunet-service-core_kx.c:1529 | 1370 | #: src/core/gnunet-service-core_kx.c:1532 |
1371 | msgid "# sessions terminated by key expiration" | 1371 | msgid "# sessions terminated by key expiration" |
1372 | msgstr "" | 1372 | msgstr "" |
1373 | 1373 | ||
1374 | #: src/core/gnunet-service-core_kx.c:1590 | 1374 | #: src/core/gnunet-service-core_kx.c:1593 |
1375 | #: src/core/gnunet-service-core_kx.c:1616 | 1375 | #: src/core/gnunet-service-core_kx.c:1619 |
1376 | msgid "# bytes dropped (duplicates)" | 1376 | msgid "# bytes dropped (duplicates)" |
1377 | msgstr "" | 1377 | msgstr "" |
1378 | 1378 | ||
1379 | #: src/core/gnunet-service-core_kx.c:1603 | 1379 | #: src/core/gnunet-service-core_kx.c:1606 |
1380 | msgid "# bytes dropped (out of sequence)" | 1380 | msgid "# bytes dropped (out of sequence)" |
1381 | msgstr "" | 1381 | msgstr "" |
1382 | 1382 | ||
1383 | #: src/core/gnunet-service-core_kx.c:1645 | 1383 | #: src/core/gnunet-service-core_kx.c:1648 |
1384 | msgid "# bytes dropped (ancient message)" | 1384 | msgid "# bytes dropped (ancient message)" |
1385 | msgstr "" | 1385 | msgstr "" |
1386 | 1386 | ||
1387 | #: src/core/gnunet-service-core_kx.c:1653 | 1387 | #: src/core/gnunet-service-core_kx.c:1656 |
1388 | msgid "# bytes of payload decrypted" | 1388 | msgid "# bytes of payload decrypted" |
1389 | msgstr "" | 1389 | msgstr "" |
1390 | 1390 | ||
1391 | #: src/core/gnunet-service-core_sessions.c:266 | 1391 | #: src/core/gnunet-service-core_sessions.c:260 |
1392 | #: src/core/gnunet-service-core_sessions.c:356 | 1392 | #: src/core/gnunet-service-core_sessions.c:350 |
1393 | #: src/dht/gnunet-service-dht_neighbours.c:733 | 1393 | #: src/dht/gnunet-service-dht_neighbours.c:733 |
1394 | #: src/dht/gnunet-service-dht_neighbours.c:795 | 1394 | #: src/dht/gnunet-service-dht_neighbours.c:795 |
1395 | #: src/fs/gnunet-service-fs_cp.c:615 src/fs/gnunet-service-fs_cp.c:1520 | 1395 | #: src/fs/gnunet-service-fs_cp.c:615 src/fs/gnunet-service-fs_cp.c:1520 |
@@ -1400,15 +1400,15 @@ msgstr "" | |||
1400 | msgid "# peers connected" | 1400 | msgid "# peers connected" |
1401 | msgstr "" | 1401 | msgstr "" |
1402 | 1402 | ||
1403 | #: src/core/gnunet-service-core_sessions.c:302 | 1403 | #: src/core/gnunet-service-core_sessions.c:296 |
1404 | msgid "# type map refreshes sent" | 1404 | msgid "# type map refreshes sent" |
1405 | msgstr "" | 1405 | msgstr "" |
1406 | 1406 | ||
1407 | #: src/core/gnunet-service-core_sessions.c:422 | 1407 | #: src/core/gnunet-service-core_sessions.c:416 |
1408 | msgid "# outdated typemap confirmations received" | 1408 | msgid "# outdated typemap confirmations received" |
1409 | msgstr "" | 1409 | msgstr "" |
1410 | 1410 | ||
1411 | #: src/core/gnunet-service-core_sessions.c:439 | 1411 | #: src/core/gnunet-service-core_sessions.c:433 |
1412 | msgid "# valid typemap confirmations received" | 1412 | msgid "# valid typemap confirmations received" |
1413 | msgstr "" | 1413 | msgstr "" |
1414 | 1414 | ||
@@ -1421,133 +1421,6 @@ msgstr "" | |||
1421 | msgid "# updates to my type map" | 1421 | msgid "# updates to my type map" |
1422 | msgstr "" | 1422 | msgstr "" |
1423 | 1423 | ||
1424 | #: src/credential/credential_misc.c:88 | ||
1425 | #, c-format | ||
1426 | msgid "Unable to parse CRED record string `%s'\n" | ||
1427 | msgstr "" | ||
1428 | |||
1429 | #: src/credential/gnunet-credential.c:278 src/namestore/gnunet-namestore.c:776 | ||
1430 | #: src/namestore/plugin_rest_namestore.c:1009 | ||
1431 | #, c-format | ||
1432 | msgid "Ego `%s' not known to identity service\n" | ||
1433 | msgstr "" | ||
1434 | |||
1435 | #: src/credential/gnunet-credential.c:294 | ||
1436 | #: src/credential/gnunet-credential.c:446 | ||
1437 | #, c-format | ||
1438 | msgid "Issuer public key `%s' is not well-formed\n" | ||
1439 | msgstr "" | ||
1440 | |||
1441 | #: src/credential/gnunet-credential.c:375 | ||
1442 | #: src/credential/gnunet-credential.c:435 | ||
1443 | #, c-format | ||
1444 | msgid "Issuer public key not well-formed\n" | ||
1445 | msgstr "" | ||
1446 | |||
1447 | #: src/credential/gnunet-credential.c:386 | ||
1448 | #: src/credential/gnunet-credential.c:455 | ||
1449 | #, fuzzy, c-format | ||
1450 | msgid "Failed to connect to CREDENTIAL\n" | ||
1451 | msgstr "Impossible d’ouvrir « %s ».\n" | ||
1452 | |||
1453 | #: src/credential/gnunet-credential.c:392 | ||
1454 | #, c-format | ||
1455 | msgid "You must provide issuer the attribute\n" | ||
1456 | msgstr "" | ||
1457 | |||
1458 | #: src/credential/gnunet-credential.c:399 | ||
1459 | #, c-format | ||
1460 | msgid "ego required\n" | ||
1461 | msgstr "" | ||
1462 | |||
1463 | #: src/credential/gnunet-credential.c:415 | ||
1464 | #, c-format | ||
1465 | msgid "Subject public key needed\n" | ||
1466 | msgstr "" | ||
1467 | |||
1468 | #: src/credential/gnunet-credential.c:426 | ||
1469 | #, c-format | ||
1470 | msgid "Subject public key `%s' is not well-formed\n" | ||
1471 | msgstr "" | ||
1472 | |||
1473 | #: src/credential/gnunet-credential.c:461 | ||
1474 | #, c-format | ||
1475 | msgid "You must provide issuer and subject attributes\n" | ||
1476 | msgstr "" | ||
1477 | |||
1478 | #: src/credential/gnunet-credential.c:511 | ||
1479 | #, c-format | ||
1480 | msgid "Issuer ego required\n" | ||
1481 | msgstr "" | ||
1482 | |||
1483 | #: src/credential/gnunet-credential.c:523 | ||
1484 | #, c-format | ||
1485 | msgid "Please specify name to lookup, subject key and issuer key!\n" | ||
1486 | msgstr "" | ||
1487 | |||
1488 | #: src/credential/gnunet-credential.c:543 | ||
1489 | msgid "create credential" | ||
1490 | msgstr "" | ||
1491 | |||
1492 | #: src/credential/gnunet-credential.c:547 | ||
1493 | msgid "verify credential against attribute" | ||
1494 | msgstr "" | ||
1495 | |||
1496 | #: src/credential/gnunet-credential.c:552 | ||
1497 | msgid "The public key of the subject to lookup the credential for" | ||
1498 | msgstr "" | ||
1499 | |||
1500 | #: src/credential/gnunet-credential.c:557 | ||
1501 | msgid "The name of the credential presented by the subject" | ||
1502 | msgstr "" | ||
1503 | |||
1504 | #: src/credential/gnunet-credential.c:562 | ||
1505 | msgid "The public key of the authority to verify the credential against" | ||
1506 | msgstr "" | ||
1507 | |||
1508 | #: src/credential/gnunet-credential.c:567 | ||
1509 | msgid "The ego to use" | ||
1510 | msgstr "" | ||
1511 | |||
1512 | #: src/credential/gnunet-credential.c:572 | ||
1513 | msgid "The issuer attribute to verify against or to issue" | ||
1514 | msgstr "" | ||
1515 | |||
1516 | #: src/credential/gnunet-credential.c:577 | ||
1517 | msgid "The time to live for the credential" | ||
1518 | msgstr "" | ||
1519 | |||
1520 | #: src/credential/gnunet-credential.c:581 | ||
1521 | msgid "collect credentials" | ||
1522 | msgstr "" | ||
1523 | |||
1524 | #: src/credential/gnunet-credential.c:595 | ||
1525 | msgid "GNUnet credential resolver tool" | ||
1526 | msgstr "" | ||
1527 | |||
1528 | #: src/credential/gnunet-service-credential.c:1204 | ||
1529 | #: src/gns/gnunet-gns-helper-service-w32.c:727 src/gns/gnunet-gns.c:355 | ||
1530 | #, c-format | ||
1531 | msgid "Failed to connect to GNS\n" | ||
1532 | msgstr "" | ||
1533 | |||
1534 | #: src/credential/gnunet-service-credential.c:1210 | ||
1535 | #: src/namestore/gnunet-namestore-fcfsd.c:1034 | ||
1536 | #: src/namestore/gnunet-namestore.c:802 | ||
1537 | #: src/namestore/plugin_rest_namestore.c:1022 | ||
1538 | #, c-format | ||
1539 | msgid "Failed to connect to namestore\n" | ||
1540 | msgstr "" | ||
1541 | |||
1542 | #: src/credential/plugin_gnsrecord_credential.c:186 | ||
1543 | #, fuzzy, c-format | ||
1544 | msgid "Unable to parse ATTR record string `%s'\n" | ||
1545 | msgstr "Résolution de « %s » échouée\n" | ||
1546 | |||
1547 | #: src/credential/plugin_rest_credential.c:1155 src/gns/plugin_rest_gns.c:668 | ||
1548 | msgid "GNS REST API initialized\n" | ||
1549 | msgstr "" | ||
1550 | |||
1551 | #: src/datacache/datacache.c:119 src/datacache/datacache.c:294 | 1424 | #: src/datacache/datacache.c:119 src/datacache/datacache.c:294 |
1552 | #: src/datastore/gnunet-service-datastore.c:757 | 1425 | #: src/datastore/gnunet-service-datastore.c:757 |
1553 | msgid "# bytes stored" | 1426 | msgid "# bytes stored" |
@@ -1591,9 +1464,8 @@ msgstr "" | |||
1591 | #: src/datacache/plugin_datacache_sqlite.c:122 | 1464 | #: src/datacache/plugin_datacache_sqlite.c:122 |
1592 | #: src/datastore/plugin_datastore_mysql.c:892 | 1465 | #: src/datastore/plugin_datastore_mysql.c:892 |
1593 | #: src/datastore/plugin_datastore_sqlite.c:58 | 1466 | #: src/datastore/plugin_datastore_sqlite.c:58 |
1594 | #: src/datastore/plugin_datastore_sqlite.c:66 | 1467 | #: src/datastore/plugin_datastore_sqlite.c:66 src/my/my.c:80 src/my/my.c:92 |
1595 | #: src/identity-provider/plugin_identity_provider_sqlite.c:52 src/my/my.c:80 | 1468 | #: src/mysql/mysql.c:42 src/mysql/mysql.c:49 |
1596 | #: src/my/my.c:92 src/mysql/mysql.c:42 src/mysql/mysql.c:49 | ||
1597 | #: src/namecache/plugin_namecache_sqlite.c:53 | 1469 | #: src/namecache/plugin_namecache_sqlite.c:53 |
1598 | #: src/namestore/plugin_namestore_sqlite.c:53 | 1470 | #: src/namestore/plugin_namestore_sqlite.c:53 |
1599 | #: src/peerstore/plugin_peerstore_sqlite.c:52 | 1471 | #: src/peerstore/plugin_peerstore_sqlite.c:52 |
@@ -1611,7 +1483,6 @@ msgstr "" | |||
1611 | 1483 | ||
1612 | #: src/datacache/plugin_datacache_sqlite.c:817 | 1484 | #: src/datacache/plugin_datacache_sqlite.c:817 |
1613 | #: src/datastore/plugin_datastore_sqlite.c:456 | 1485 | #: src/datastore/plugin_datastore_sqlite.c:456 |
1614 | #: src/identity-provider/plugin_identity_provider_sqlite.c:336 | ||
1615 | #: src/namecache/plugin_namecache_sqlite.c:296 | 1486 | #: src/namecache/plugin_namecache_sqlite.c:296 |
1616 | #: src/namestore/plugin_namestore_sqlite.c:355 | 1487 | #: src/namestore/plugin_namestore_sqlite.c:355 |
1617 | msgid "Tried to close sqlite without finalizing all prepared statements.\n" | 1488 | msgid "Tried to close sqlite without finalizing all prepared statements.\n" |
@@ -1635,7 +1506,7 @@ msgstr "" | |||
1635 | msgid "# queue entries created" | 1506 | msgid "# queue entries created" |
1636 | msgstr "" | 1507 | msgstr "" |
1637 | 1508 | ||
1638 | #: src/datastore/datastore_api.c:740 | 1509 | #: src/datastore/datastore_api.c:760 |
1639 | msgid "# status messages received" | 1510 | msgid "# status messages received" |
1640 | msgstr "" | 1511 | msgstr "" |
1641 | 1512 | ||
@@ -1643,35 +1514,35 @@ msgstr "" | |||
1643 | msgid "# Results received" | 1514 | msgid "# Results received" |
1644 | msgstr "" | 1515 | msgstr "" |
1645 | 1516 | ||
1646 | #: src/datastore/datastore_api.c:941 | 1517 | #: src/datastore/datastore_api.c:920 |
1647 | msgid "# datastore connections (re)created" | 1518 | msgid "# datastore connections (re)created" |
1648 | msgstr "" | 1519 | msgstr "" |
1649 | 1520 | ||
1650 | #: src/datastore/datastore_api.c:1055 | 1521 | #: src/datastore/datastore_api.c:1034 |
1651 | msgid "# PUT requests executed" | 1522 | msgid "# PUT requests executed" |
1652 | msgstr "" | 1523 | msgstr "" |
1653 | 1524 | ||
1654 | #: src/datastore/datastore_api.c:1116 | 1525 | #: src/datastore/datastore_api.c:1095 |
1655 | msgid "# RESERVE requests executed" | 1526 | msgid "# RESERVE requests executed" |
1656 | msgstr "" | 1527 | msgstr "" |
1657 | 1528 | ||
1658 | #: src/datastore/datastore_api.c:1181 | 1529 | #: src/datastore/datastore_api.c:1160 |
1659 | msgid "# RELEASE RESERVE requests executed" | 1530 | msgid "# RELEASE RESERVE requests executed" |
1660 | msgstr "" | 1531 | msgstr "" |
1661 | 1532 | ||
1662 | #: src/datastore/datastore_api.c:1259 | 1533 | #: src/datastore/datastore_api.c:1238 |
1663 | msgid "# REMOVE requests executed" | 1534 | msgid "# REMOVE requests executed" |
1664 | msgstr "" | 1535 | msgstr "" |
1665 | 1536 | ||
1666 | #: src/datastore/datastore_api.c:1319 | 1537 | #: src/datastore/datastore_api.c:1298 |
1667 | msgid "# GET REPLICATION requests executed" | 1538 | msgid "# GET REPLICATION requests executed" |
1668 | msgstr "" | 1539 | msgstr "" |
1669 | 1540 | ||
1670 | #: src/datastore/datastore_api.c:1381 | 1541 | #: src/datastore/datastore_api.c:1360 |
1671 | msgid "# GET ZERO ANONYMITY requests executed" | 1542 | msgid "# GET ZERO ANONYMITY requests executed" |
1672 | msgstr "" | 1543 | msgstr "" |
1673 | 1544 | ||
1674 | #: src/datastore/datastore_api.c:1462 | 1545 | #: src/datastore/datastore_api.c:1441 |
1675 | msgid "# GET requests executed" | 1546 | msgid "# GET requests executed" |
1676 | msgstr "" | 1547 | msgstr "" |
1677 | 1548 | ||
@@ -1936,7 +1807,6 @@ msgid "`%s' failed at %s:%u with error: %s" | |||
1936 | msgstr "" | 1807 | msgstr "" |
1937 | 1808 | ||
1938 | #: src/datastore/plugin_datastore_sqlite.c:271 | 1809 | #: src/datastore/plugin_datastore_sqlite.c:271 |
1939 | #: src/identity-provider/plugin_identity_provider_sqlite.c:212 | ||
1940 | #: src/namecache/plugin_namecache_sqlite.c:194 | 1810 | #: src/namecache/plugin_namecache_sqlite.c:194 |
1941 | #: src/namestore/plugin_namestore_sqlite.c:222 | 1811 | #: src/namestore/plugin_namestore_sqlite.c:222 |
1942 | #: src/peerstore/plugin_peerstore_sqlite.c:535 | 1812 | #: src/peerstore/plugin_peerstore_sqlite.c:535 |
@@ -1961,7 +1831,6 @@ msgid "" | |||
1961 | msgstr "" | 1831 | msgstr "" |
1962 | 1832 | ||
1963 | #: src/datastore/plugin_datastore_sqlite.c:1337 | 1833 | #: src/datastore/plugin_datastore_sqlite.c:1337 |
1964 | #: src/identity-provider/plugin_identity_provider_sqlite.c:711 | ||
1965 | #: src/namecache/plugin_namecache_sqlite.c:603 | 1834 | #: src/namecache/plugin_namecache_sqlite.c:603 |
1966 | #: src/namestore/plugin_namestore_sqlite.c:802 | 1835 | #: src/namestore/plugin_namestore_sqlite.c:802 |
1967 | msgid "Sqlite database running\n" | 1836 | msgid "Sqlite database running\n" |
@@ -2030,6 +1899,51 @@ msgstr "" | |||
2030 | msgid "Prints all packets that go through the DHT." | 1899 | msgid "Prints all packets that go through the DHT." |
2031 | msgstr "" | 1900 | msgstr "" |
2032 | 1901 | ||
1902 | #: src/dht/gnunet_dht_profiler.c:1161 src/testbed/gnunet-testbed-profiler.c:253 | ||
1903 | #, c-format | ||
1904 | msgid "Exiting as the number of peers is %u\n" | ||
1905 | msgstr "" | ||
1906 | |||
1907 | #: src/dht/gnunet_dht_profiler.c:1188 | ||
1908 | #, fuzzy | ||
1909 | msgid "number of peers to start" | ||
1910 | msgstr "nombre de valeurs" | ||
1911 | |||
1912 | #: src/dht/gnunet_dht_profiler.c:1194 | ||
1913 | msgid "" | ||
1914 | "maximum number of times we try to search for successor circle formation (0 " | ||
1915 | "for R5N)" | ||
1916 | msgstr "" | ||
1917 | |||
1918 | #: src/dht/gnunet_dht_profiler.c:1200 src/nse/gnunet-nse-profiler.c:853 | ||
1919 | #: src/testbed/gnunet-testbed-profiler.c:304 | ||
1920 | msgid "name of the file with the login information for the testbed" | ||
1921 | msgstr "" | ||
1922 | |||
1923 | #: src/dht/gnunet_dht_profiler.c:1206 | ||
1924 | msgid "delay between rounds for collecting statistics (default: 30 sec)" | ||
1925 | msgstr "" | ||
1926 | |||
1927 | #: src/dht/gnunet_dht_profiler.c:1212 | ||
1928 | msgid "delay to start doing PUTs (default: 1 sec)" | ||
1929 | msgstr "" | ||
1930 | |||
1931 | #: src/dht/gnunet_dht_profiler.c:1218 | ||
1932 | msgid "delay to start doing GETs (default: 5 min)" | ||
1933 | msgstr "" | ||
1934 | |||
1935 | #: src/dht/gnunet_dht_profiler.c:1223 | ||
1936 | msgid "replication degree for DHT PUTs" | ||
1937 | msgstr "" | ||
1938 | |||
1939 | #: src/dht/gnunet_dht_profiler.c:1230 | ||
1940 | msgid "timeout for DHT PUT and GET requests (default: 1 min)" | ||
1941 | msgstr "" | ||
1942 | |||
1943 | #: src/dht/gnunet_dht_profiler.c:1248 | ||
1944 | msgid "Measure quality and performance of the DHT service." | ||
1945 | msgstr "" | ||
1946 | |||
2033 | #: src/dht/gnunet-dht-put.c:120 | 1947 | #: src/dht/gnunet-dht-put.c:120 |
2034 | msgid "PUT request sent with key" | 1948 | msgid "PUT request sent with key" |
2035 | msgstr "" | 1949 | msgstr "" |
@@ -2279,51 +2193,6 @@ msgstr "" | |||
2279 | msgid "# DHT requests combined" | 2193 | msgid "# DHT requests combined" |
2280 | msgstr "" | 2194 | msgstr "" |
2281 | 2195 | ||
2282 | #: src/dht/gnunet_dht_profiler.c:1161 src/testbed/gnunet-testbed-profiler.c:255 | ||
2283 | #, c-format | ||
2284 | msgid "Exiting as the number of peers is %u\n" | ||
2285 | msgstr "" | ||
2286 | |||
2287 | #: src/dht/gnunet_dht_profiler.c:1188 | ||
2288 | #, fuzzy | ||
2289 | msgid "number of peers to start" | ||
2290 | msgstr "nombre de valeurs" | ||
2291 | |||
2292 | #: src/dht/gnunet_dht_profiler.c:1194 | ||
2293 | msgid "" | ||
2294 | "maximum number of times we try to search for successor circle formation (0 " | ||
2295 | "for R5N)" | ||
2296 | msgstr "" | ||
2297 | |||
2298 | #: src/dht/gnunet_dht_profiler.c:1200 src/nse/gnunet-nse-profiler.c:853 | ||
2299 | #: src/testbed/gnunet-testbed-profiler.c:305 | ||
2300 | msgid "name of the file with the login information for the testbed" | ||
2301 | msgstr "" | ||
2302 | |||
2303 | #: src/dht/gnunet_dht_profiler.c:1206 | ||
2304 | msgid "delay between rounds for collecting statistics (default: 30 sec)" | ||
2305 | msgstr "" | ||
2306 | |||
2307 | #: src/dht/gnunet_dht_profiler.c:1212 | ||
2308 | msgid "delay to start doing PUTs (default: 1 sec)" | ||
2309 | msgstr "" | ||
2310 | |||
2311 | #: src/dht/gnunet_dht_profiler.c:1218 | ||
2312 | msgid "delay to start doing GETs (default: 5 min)" | ||
2313 | msgstr "" | ||
2314 | |||
2315 | #: src/dht/gnunet_dht_profiler.c:1223 | ||
2316 | msgid "replication degree for DHT PUTs" | ||
2317 | msgstr "" | ||
2318 | |||
2319 | #: src/dht/gnunet_dht_profiler.c:1230 | ||
2320 | msgid "timeout for DHT PUT and GET requests (default: 1 min)" | ||
2321 | msgstr "" | ||
2322 | |||
2323 | #: src/dht/gnunet_dht_profiler.c:1248 | ||
2324 | msgid "Measure quality and performance of the DHT service." | ||
2325 | msgstr "" | ||
2326 | |||
2327 | #: src/dht/plugin_block_dht.c:187 | 2196 | #: src/dht/plugin_block_dht.c:187 |
2328 | #, c-format | 2197 | #, c-format |
2329 | msgid "Block not of type %u\n" | 2198 | msgid "Block not of type %u\n" |
@@ -2841,7 +2710,7 @@ msgstr "Dernier message reçu de %s\n" | |||
2841 | msgid "Failed to not connect to `%s' service.\n" | 2710 | msgid "Failed to not connect to `%s' service.\n" |
2842 | msgstr "" | 2711 | msgstr "" |
2843 | 2712 | ||
2844 | #: src/fs/fs_misc.c:126 | 2713 | #: src/fs/fs_misc.c:128 |
2845 | #, c-format | 2714 | #, c-format |
2846 | msgid "Did not find mime type `%s' in extension list.\n" | 2715 | msgid "Did not find mime type `%s' in extension list.\n" |
2847 | msgstr "" | 2716 | msgstr "" |
@@ -3257,6 +3126,14 @@ msgid "" | |||
3257 | "chk/...)" | 3126 | "chk/...)" |
3258 | msgstr "" | 3127 | msgstr "" |
3259 | 3128 | ||
3129 | #: src/fs/gnunet-fs.c:119 | ||
3130 | msgid "print a list of all indexed files" | ||
3131 | msgstr "" | ||
3132 | |||
3133 | #: src/fs/gnunet-fs.c:130 | ||
3134 | msgid "Special file-sharing operations" | ||
3135 | msgstr "" | ||
3136 | |||
3260 | #: src/fs/gnunet-fs-profiler.c:211 | 3137 | #: src/fs/gnunet-fs-profiler.c:211 |
3261 | msgid "run the experiment with COUNT peers" | 3138 | msgid "run the experiment with COUNT peers" |
3262 | msgstr "" | 3139 | msgstr "" |
@@ -3273,14 +3150,6 @@ msgstr "" | |||
3273 | msgid "run a testbed to measure file-sharing performance" | 3150 | msgid "run a testbed to measure file-sharing performance" |
3274 | msgstr "" | 3151 | msgstr "" |
3275 | 3152 | ||
3276 | #: src/fs/gnunet-fs.c:119 | ||
3277 | msgid "print a list of all indexed files" | ||
3278 | msgstr "" | ||
3279 | |||
3280 | #: src/fs/gnunet-fs.c:130 | ||
3281 | msgid "Special file-sharing operations" | ||
3282 | msgstr "" | ||
3283 | |||
3284 | #: src/fs/gnunet-publish.c:219 src/fs/gnunet-publish.c:231 | 3153 | #: src/fs/gnunet-publish.c:219 src/fs/gnunet-publish.c:231 |
3285 | #, c-format | 3154 | #, c-format |
3286 | msgid "Publishing `%s' at %llu/%llu (%s remaining)\n" | 3155 | msgid "Publishing `%s' at %llu/%llu (%s remaining)\n" |
@@ -3926,11 +3795,22 @@ msgstr "" | |||
3926 | msgid "GNUnet DNS-to-GNS proxy (a DNS server)" | 3795 | msgid "GNUnet DNS-to-GNS proxy (a DNS server)" |
3927 | msgstr "" | 3796 | msgstr "" |
3928 | 3797 | ||
3929 | #: src/gns/gnunet-gns-helper-service-w32.c:602 | 3798 | #: src/gns/gnunet-gns.c:235 src/gns/plugin_rest_gns.c:346 |
3930 | msgid "Not ready to process requests, lacking ego data\n" | 3799 | #, c-format |
3800 | msgid "Invalid typename specified, assuming `ANY'\n" | ||
3801 | msgstr "" | ||
3802 | |||
3803 | #: src/gns/gnunet-gns.c:252 | ||
3804 | #, c-format | ||
3805 | msgid "Please specify name to lookup!\n" | ||
3931 | msgstr "" | 3806 | msgstr "" |
3932 | 3807 | ||
3933 | #: src/gns/gnunet-gns-helper-service-w32.c:701 src/gns/gnunet-gns.c:315 | 3808 | #: src/gns/gnunet-gns.c:276 |
3809 | #, c-format | ||
3810 | msgid "Ego for `%s' not found, cannot perform lookup.\n" | ||
3811 | msgstr "" | ||
3812 | |||
3813 | #: src/gns/gnunet-gns.c:315 src/gns/gnunet-gns-helper-service-w32.c:701 | ||
3934 | #: src/gns/plugin_rest_gns.c:422 | 3814 | #: src/gns/plugin_rest_gns.c:422 |
3935 | #, c-format | 3815 | #, c-format |
3936 | msgid "" | 3816 | msgid "" |
@@ -3938,6 +3818,48 @@ msgid "" | |||
3938 | "gns-import.sh?\n" | 3818 | "gns-import.sh?\n" |
3939 | msgstr "" | 3819 | msgstr "" |
3940 | 3820 | ||
3821 | #: src/gns/gnunet-gns.c:355 src/gns/gnunet-gns-helper-service-w32.c:727 | ||
3822 | #, c-format | ||
3823 | msgid "Failed to connect to GNS\n" | ||
3824 | msgstr "" | ||
3825 | |||
3826 | #: src/gns/gnunet-gns.c:374 | ||
3827 | #, c-format | ||
3828 | msgid "Public key `%s' is not well-formed\n" | ||
3829 | msgstr "" | ||
3830 | |||
3831 | #: src/gns/gnunet-gns.c:428 | ||
3832 | msgid "Lookup a record for the given name" | ||
3833 | msgstr "" | ||
3834 | |||
3835 | #: src/gns/gnunet-gns.c:434 | ||
3836 | msgid "Specify the type of the record to lookup" | ||
3837 | msgstr "" | ||
3838 | |||
3839 | #: src/gns/gnunet-gns.c:440 | ||
3840 | msgid "Specify timeout for the lookup" | ||
3841 | msgstr "" | ||
3842 | |||
3843 | #: src/gns/gnunet-gns.c:445 | ||
3844 | msgid "No unneeded output" | ||
3845 | msgstr "" | ||
3846 | |||
3847 | #: src/gns/gnunet-gns.c:451 | ||
3848 | msgid "Specify the public key of the zone to lookup the record in" | ||
3849 | msgstr "" | ||
3850 | |||
3851 | #: src/gns/gnunet-gns.c:457 | ||
3852 | msgid "Specify the name of the ego of the zone to lookup the record in" | ||
3853 | msgstr "" | ||
3854 | |||
3855 | #: src/gns/gnunet-gns.c:476 | ||
3856 | msgid "GNUnet GNS resolver tool" | ||
3857 | msgstr "" | ||
3858 | |||
3859 | #: src/gns/gnunet-gns-helper-service-w32.c:602 | ||
3860 | msgid "Not ready to process requests, lacking ego data\n" | ||
3861 | msgstr "" | ||
3862 | |||
3941 | #: src/gns/gnunet-gns-helper-service-w32.c:739 | 3863 | #: src/gns/gnunet-gns-helper-service-w32.c:739 |
3942 | #, c-format | 3864 | #, c-format |
3943 | msgid "Failed to connect to identity service\n" | 3865 | msgid "Failed to connect to identity service\n" |
@@ -3962,159 +3884,111 @@ msgstr "" | |||
3962 | msgid "%s failed at %s:%d: `%s'\n" | 3884 | msgid "%s failed at %s:%d: `%s'\n" |
3963 | msgstr "" | 3885 | msgstr "" |
3964 | 3886 | ||
3965 | #: src/gns/gnunet-gns-proxy.c:878 | 3887 | #: src/gns/gnunet-gns-proxy.c:887 |
3966 | #, c-format | 3888 | #, c-format |
3967 | msgid "Unsupported CURL SSL backend %d\n" | 3889 | msgid "Unsupported CURL SSL backend %d\n" |
3968 | msgstr "" | 3890 | msgstr "" |
3969 | 3891 | ||
3970 | #: src/gns/gnunet-gns-proxy.c:901 | 3892 | #: src/gns/gnunet-gns-proxy.c:910 |
3971 | #, c-format | 3893 | #, c-format |
3972 | msgid "Failed to fetch CN from cert: %s\n" | 3894 | msgid "Failed to fetch CN from cert: %s\n" |
3973 | msgstr "" | 3895 | msgstr "" |
3974 | 3896 | ||
3975 | #: src/gns/gnunet-gns-proxy.c:924 | 3897 | #: src/gns/gnunet-gns-proxy.c:933 |
3976 | #, c-format | 3898 | #, c-format |
3977 | msgid "Failed to initialize DANE: %s\n" | 3899 | msgid "Failed to initialize DANE: %s\n" |
3978 | msgstr "" | 3900 | msgstr "" |
3979 | 3901 | ||
3980 | #: src/gns/gnunet-gns-proxy.c:937 | 3902 | #: src/gns/gnunet-gns-proxy.c:946 |
3981 | #, c-format | 3903 | #, c-format |
3982 | msgid "Failed to parse DANE record: %s\n" | 3904 | msgid "Failed to parse DANE record: %s\n" |
3983 | msgstr "" | 3905 | msgstr "" |
3984 | 3906 | ||
3985 | #: src/gns/gnunet-gns-proxy.c:952 | 3907 | #: src/gns/gnunet-gns-proxy.c:961 |
3986 | #, c-format | 3908 | #, c-format |
3987 | msgid "Failed to verify TLS connection using DANE: %s\n" | 3909 | msgid "Failed to verify TLS connection using DANE: %s\n" |
3988 | msgstr "" | 3910 | msgstr "" |
3989 | 3911 | ||
3990 | #: src/gns/gnunet-gns-proxy.c:962 | 3912 | #: src/gns/gnunet-gns-proxy.c:971 |
3991 | #, c-format | 3913 | #, c-format |
3992 | msgid "Failed DANE verification failed with GnuTLS verify status code: %u\n" | 3914 | msgid "Failed DANE verification failed with GnuTLS verify status code: %u\n" |
3993 | msgstr "" | 3915 | msgstr "" |
3994 | 3916 | ||
3995 | #: src/gns/gnunet-gns-proxy.c:986 | 3917 | #: src/gns/gnunet-gns-proxy.c:995 |
3996 | #, c-format | 3918 | #, c-format |
3997 | msgid "SSL certificate subject name (%s) does not match `%s'\n" | 3919 | msgid "SSL certificate subject name (%s) does not match `%s'\n" |
3998 | msgstr "" | 3920 | msgstr "" |
3999 | 3921 | ||
4000 | #: src/gns/gnunet-gns-proxy.c:1095 | 3922 | #: src/gns/gnunet-gns-proxy.c:1104 |
4001 | #, c-format | 3923 | #, c-format |
4002 | msgid "Cookie domain `%s' supplied by server is invalid\n" | 3924 | msgid "Cookie domain `%s' supplied by server is invalid\n" |
4003 | msgstr "" | 3925 | msgstr "" |
4004 | 3926 | ||
4005 | #: src/gns/gnunet-gns-proxy.c:1699 | 3927 | #: src/gns/gnunet-gns-proxy.c:1709 |
4006 | #, c-format | 3928 | #, c-format |
4007 | msgid "Unsupported HTTP method `%s'\n" | 3929 | msgid "Unsupported HTTP method `%s'\n" |
4008 | msgstr "" | 3930 | msgstr "" |
4009 | 3931 | ||
4010 | #: src/gns/gnunet-gns-proxy.c:2162 | 3932 | #: src/gns/gnunet-gns-proxy.c:2172 |
4011 | #, c-format | 3933 | #, c-format |
4012 | msgid "Unable to import private key from file `%s'\n" | 3934 | msgid "Unable to import private key from file `%s'\n" |
4013 | msgstr "" | 3935 | msgstr "" |
4014 | 3936 | ||
4015 | #: src/gns/gnunet-gns-proxy.c:2192 | 3937 | #: src/gns/gnunet-gns-proxy.c:2202 |
4016 | #, c-format | 3938 | #, c-format |
4017 | msgid "Unable to import certificate %s\n" | 3939 | msgid "Unable to import certificate %s\n" |
4018 | msgstr "" | 3940 | msgstr "" |
4019 | 3941 | ||
4020 | #: src/gns/gnunet-gns-proxy.c:2365 | 3942 | #: src/gns/gnunet-gns-proxy.c:2375 |
4021 | #, c-format | 3943 | #, c-format |
4022 | msgid "Failed to start HTTPS server for `%s'\n" | 3944 | msgid "Failed to start HTTPS server for `%s'\n" |
4023 | msgstr "" | 3945 | msgstr "" |
4024 | 3946 | ||
4025 | #: src/gns/gnunet-gns-proxy.c:2384 src/rest/gnunet-rest-server.c:533 | 3947 | #: src/gns/gnunet-gns-proxy.c:2394 src/rest/gnunet-rest-server.c:533 |
4026 | msgid "Failed to pass client to MHD\n" | 3948 | msgid "Failed to pass client to MHD\n" |
4027 | msgstr "" | 3949 | msgstr "" |
4028 | 3950 | ||
4029 | #: src/gns/gnunet-gns-proxy.c:2704 | 3951 | #: src/gns/gnunet-gns-proxy.c:2716 |
4030 | #, c-format | 3952 | #, c-format |
4031 | msgid "Unsupported socks version %d\n" | 3953 | msgid "Unsupported socks version %d\n" |
4032 | msgstr "" | 3954 | msgstr "" |
4033 | 3955 | ||
4034 | #: src/gns/gnunet-gns-proxy.c:2733 | 3956 | #: src/gns/gnunet-gns-proxy.c:2745 |
4035 | #, c-format | 3957 | #, c-format |
4036 | msgid "Unsupported socks command %d\n" | 3958 | msgid "Unsupported socks command %d\n" |
4037 | msgstr "" | 3959 | msgstr "" |
4038 | 3960 | ||
4039 | #: src/gns/gnunet-gns-proxy.c:2751 src/gns/gnunet-gns-proxy.c:2780 | 3961 | #: src/gns/gnunet-gns-proxy.c:2763 src/gns/gnunet-gns-proxy.c:2792 |
4040 | msgid "SSL connection to plain IPv4 address requested\n" | 3962 | msgid "SSL connection to plain IPv4 address requested\n" |
4041 | msgstr "" | 3963 | msgstr "" |
4042 | 3964 | ||
4043 | #: src/gns/gnunet-gns-proxy.c:2830 | 3965 | #: src/gns/gnunet-gns-proxy.c:2842 |
4044 | #, c-format | 3966 | #, c-format |
4045 | msgid "Unsupported socks address type %d\n" | 3967 | msgid "Unsupported socks address type %d\n" |
4046 | msgstr "" | 3968 | msgstr "" |
4047 | 3969 | ||
4048 | #: src/gns/gnunet-gns-proxy.c:3165 src/gns/gnunet-service-gns.c:403 | 3970 | #: src/gns/gnunet-gns-proxy.c:3177 src/gns/gnunet-service-gns.c:403 |
4049 | #, c-format | 3971 | #, c-format |
4050 | msgid "No ego configured for `%s`\n" | 3972 | msgid "No ego configured for `%s`\n" |
4051 | msgstr "" | 3973 | msgstr "" |
4052 | 3974 | ||
4053 | #: src/gns/gnunet-gns-proxy.c:3226 | 3975 | #: src/gns/gnunet-gns-proxy.c:3238 |
4054 | #, c-format | 3976 | #, c-format |
4055 | msgid "Failed to load SSL/TLS key and certificate from `%s'\n" | 3977 | msgid "Failed to load SSL/TLS key and certificate from `%s'\n" |
4056 | msgstr "" | 3978 | msgstr "" |
4057 | 3979 | ||
4058 | #: src/gns/gnunet-gns-proxy.c:3269 | 3980 | #: src/gns/gnunet-gns-proxy.c:3281 |
4059 | msgid "listen on specified port (default: 7777)" | 3981 | msgid "listen on specified port (default: 7777)" |
4060 | msgstr "" | 3982 | msgstr "" |
4061 | 3983 | ||
4062 | #: src/gns/gnunet-gns-proxy.c:3275 | 3984 | #: src/gns/gnunet-gns-proxy.c:3287 |
4063 | msgid "pem file to use as CA" | 3985 | msgid "pem file to use as CA" |
4064 | msgstr "" | 3986 | msgstr "" |
4065 | 3987 | ||
4066 | #: src/gns/gnunet-gns-proxy.c:3300 | 3988 | #: src/gns/gnunet-gns-proxy.c:3312 |
4067 | msgid "GNUnet GNS proxy" | 3989 | msgid "GNUnet GNS proxy" |
4068 | msgstr "" | 3990 | msgstr "" |
4069 | 3991 | ||
4070 | #: src/gns/gnunet-gns.c:235 src/gns/plugin_rest_gns.c:346 | ||
4071 | #, c-format | ||
4072 | msgid "Invalid typename specified, assuming `ANY'\n" | ||
4073 | msgstr "" | ||
4074 | |||
4075 | #: src/gns/gnunet-gns.c:252 | ||
4076 | #, c-format | ||
4077 | msgid "Please specify name to lookup!\n" | ||
4078 | msgstr "" | ||
4079 | |||
4080 | #: src/gns/gnunet-gns.c:276 | ||
4081 | #, c-format | ||
4082 | msgid "Ego for `%s' not found, cannot perform lookup.\n" | ||
4083 | msgstr "" | ||
4084 | |||
4085 | #: src/gns/gnunet-gns.c:374 | ||
4086 | #, c-format | ||
4087 | msgid "Public key `%s' is not well-formed\n" | ||
4088 | msgstr "" | ||
4089 | |||
4090 | #: src/gns/gnunet-gns.c:428 | ||
4091 | msgid "Lookup a record for the given name" | ||
4092 | msgstr "" | ||
4093 | |||
4094 | #: src/gns/gnunet-gns.c:434 | ||
4095 | msgid "Specify the type of the record to lookup" | ||
4096 | msgstr "" | ||
4097 | |||
4098 | #: src/gns/gnunet-gns.c:440 | ||
4099 | msgid "Specify timeout for the lookup" | ||
4100 | msgstr "" | ||
4101 | |||
4102 | #: src/gns/gnunet-gns.c:445 | ||
4103 | msgid "No unneeded output" | ||
4104 | msgstr "" | ||
4105 | |||
4106 | #: src/gns/gnunet-gns.c:451 | ||
4107 | msgid "Specify the public key of the zone to lookup the record in" | ||
4108 | msgstr "" | ||
4109 | |||
4110 | #: src/gns/gnunet-gns.c:457 | ||
4111 | msgid "Specify the name of the ego of the zone to lookup the record in" | ||
4112 | msgstr "" | ||
4113 | |||
4114 | #: src/gns/gnunet-gns.c:476 | ||
4115 | msgid "GNUnet GNS resolver tool" | ||
4116 | msgstr "" | ||
4117 | |||
4118 | #: src/gns/gnunet-service-gns.c:442 | 3992 | #: src/gns/gnunet-service-gns.c:442 |
4119 | msgid "Failed to connect to the namecache!\n" | 3993 | msgid "Failed to connect to the namecache!\n" |
4120 | msgstr "" | 3994 | msgstr "" |
@@ -4175,35 +4049,44 @@ msgstr "" | |||
4175 | msgid "Hostname `%s' is not well-formed, resolution fails\n" | 4049 | msgid "Hostname `%s' is not well-formed, resolution fails\n" |
4176 | msgstr "" | 4050 | msgstr "" |
4177 | 4051 | ||
4178 | #: src/gns/plugin_gnsrecord_gns.c:179 | 4052 | #: src/gns/plugin_gnsrecord_gns.c:203 |
4179 | #, c-format | 4053 | #, c-format |
4180 | msgid "Unable to parse PKEY record `%s'\n" | 4054 | msgid "Unable to parse PKEY record `%s'\n" |
4181 | msgstr "" | 4055 | msgstr "" |
4182 | 4056 | ||
4183 | #: src/gns/plugin_gnsrecord_gns.c:208 | 4057 | #: src/gns/plugin_gnsrecord_gns.c:232 |
4184 | #, c-format | 4058 | #, c-format |
4185 | msgid "Unable to parse GNS2DNS record `%s'\n" | 4059 | msgid "Unable to parse GNS2DNS record `%s'\n" |
4186 | msgstr "" | 4060 | msgstr "" |
4187 | 4061 | ||
4188 | #: src/gns/plugin_gnsrecord_gns.c:229 | 4062 | #: src/gns/plugin_gnsrecord_gns.c:253 |
4189 | #, c-format | 4063 | #, c-format |
4190 | msgid "Failed to serialize GNS2DNS record with value `%s'\n" | 4064 | msgid "Failed to serialize GNS2DNS record with value `%s'\n" |
4191 | msgstr "" | 4065 | msgstr "" |
4192 | 4066 | ||
4193 | #: src/gns/plugin_gnsrecord_gns.c:252 | 4067 | #: src/gns/plugin_gnsrecord_gns.c:276 |
4194 | #, c-format | 4068 | #, c-format |
4195 | msgid "Unable to parse VPN record string `%s'\n" | 4069 | msgid "Unable to parse VPN record string `%s'\n" |
4196 | msgstr "" | 4070 | msgstr "" |
4197 | 4071 | ||
4198 | #: src/gns/plugin_gnsrecord_gns.c:288 | 4072 | #: src/gns/plugin_gnsrecord_gns.c:312 |
4199 | #, c-format | 4073 | #, c-format |
4200 | msgid "Unable to parse BOX record string `%s'\n" | 4074 | msgid "Unable to parse BOX record string `%s'\n" |
4201 | msgstr "" | 4075 | msgstr "" |
4202 | 4076 | ||
4077 | #: src/gns/plugin_gnsrecord_gns.c:360 | ||
4078 | #, c-format | ||
4079 | msgid "Unable to parse REVERSE record string `%s'\n" | ||
4080 | msgstr "" | ||
4081 | |||
4203 | #: src/gns/plugin_rest_gns.c:384 | 4082 | #: src/gns/plugin_rest_gns.c:384 |
4204 | msgid "Ego for not found, cannot perform lookup.\n" | 4083 | msgid "Ego for not found, cannot perform lookup.\n" |
4205 | msgstr "" | 4084 | msgstr "" |
4206 | 4085 | ||
4086 | #: src/gns/plugin_rest_gns.c:668 | ||
4087 | msgid "GNS REST API initialized\n" | ||
4088 | msgstr "" | ||
4089 | |||
4207 | #: src/gnsrecord/plugin_gnsrecord_dns.c:359 | 4090 | #: src/gnsrecord/plugin_gnsrecord_dns.c:359 |
4208 | #, c-format | 4091 | #, c-format |
4209 | msgid "Unable to parse IPv4 address `%s'\n" | 4092 | msgid "Unable to parse IPv4 address `%s'\n" |
@@ -4309,33 +4192,33 @@ msgstr "" | |||
4309 | msgid "Modified %u addresses, wrote %u bytes\n" | 4192 | msgid "Modified %u addresses, wrote %u bytes\n" |
4310 | msgstr "" | 4193 | msgstr "" |
4311 | 4194 | ||
4312 | #: src/hello/hello.c:1103 | 4195 | #: src/hello/hello.c:1110 |
4313 | msgid "Failed to parse HELLO message: missing expiration time\n" | 4196 | msgid "Failed to parse HELLO message: missing expiration time\n" |
4314 | msgstr "" | 4197 | msgstr "" |
4315 | 4198 | ||
4316 | #: src/hello/hello.c:1112 | 4199 | #: src/hello/hello.c:1119 |
4317 | msgid "Failed to parse HELLO message: invalid expiration time\n" | 4200 | msgid "Failed to parse HELLO message: invalid expiration time\n" |
4318 | msgstr "" | 4201 | msgstr "" |
4319 | 4202 | ||
4320 | #: src/hello/hello.c:1122 | 4203 | #: src/hello/hello.c:1129 |
4321 | msgid "Failed to parse HELLO message: malformed\n" | 4204 | msgid "Failed to parse HELLO message: malformed\n" |
4322 | msgstr "" | 4205 | msgstr "" |
4323 | 4206 | ||
4324 | #: src/hello/hello.c:1133 | 4207 | #: src/hello/hello.c:1140 |
4325 | msgid "Failed to parse HELLO message: missing transport plugin\n" | 4208 | msgid "Failed to parse HELLO message: missing transport plugin\n" |
4326 | msgstr "" | 4209 | msgstr "" |
4327 | 4210 | ||
4328 | #: src/hello/hello.c:1151 | 4211 | #: src/hello/hello.c:1158 |
4329 | #, fuzzy, c-format | 4212 | #, fuzzy, c-format |
4330 | msgid "Plugin `%s' not found, skipping address\n" | 4213 | msgid "Plugin `%s' not found, skipping address\n" |
4331 | msgstr "Extension « %s » introuvable\n" | 4214 | msgstr "Extension « %s » introuvable\n" |
4332 | 4215 | ||
4333 | #: src/hello/hello.c:1159 | 4216 | #: src/hello/hello.c:1166 |
4334 | #, c-format | 4217 | #, c-format |
4335 | msgid "Plugin `%s' does not support URIs yet\n" | 4218 | msgid "Plugin `%s' does not support URIs yet\n" |
4336 | msgstr "" | 4219 | msgstr "" |
4337 | 4220 | ||
4338 | #: src/hello/hello.c:1174 | 4221 | #: src/hello/hello.c:1181 |
4339 | #, c-format | 4222 | #, c-format |
4340 | msgid "Failed to parse `%s' as an address for plugin `%s'\n" | 4223 | msgid "Failed to parse `%s' as an address for plugin `%s'\n" |
4341 | msgstr "" | 4224 | msgstr "" |
@@ -4581,7 +4464,7 @@ msgid "# hostlist advertisements send" | |||
4581 | msgstr "" | 4464 | msgstr "" |
4582 | 4465 | ||
4583 | #: src/hostlist/gnunet-daemon-hostlist_server.c:679 | 4466 | #: src/hostlist/gnunet-daemon-hostlist_server.c:679 |
4584 | #: src/transport/gnunet-service-transport.c:2803 | 4467 | #: src/transport/gnunet-service-transport.c:2815 |
4585 | msgid "Could not access PEERINFO service. Exiting.\n" | 4468 | msgid "Could not access PEERINFO service. Exiting.\n" |
4586 | msgstr "" | 4469 | msgstr "" |
4587 | 4470 | ||
@@ -4623,51 +4506,6 @@ msgstr "" | |||
4623 | msgid "Could not start hostlist HTTP server on port %u\n" | 4506 | msgid "Could not start hostlist HTTP server on port %u\n" |
4624 | msgstr "" | 4507 | msgstr "" |
4625 | 4508 | ||
4626 | #: src/identity-provider/gnunet-idp.c:348 | ||
4627 | msgid "Ego is required\n" | ||
4628 | msgstr "" | ||
4629 | |||
4630 | #: src/identity-provider/gnunet-idp.c:370 | ||
4631 | msgid "Add attribute" | ||
4632 | msgstr "" | ||
4633 | |||
4634 | #: src/identity-provider/gnunet-idp.c:376 | ||
4635 | msgid "Attribute value" | ||
4636 | msgstr "" | ||
4637 | |||
4638 | #: src/identity-provider/gnunet-idp.c:381 | ||
4639 | msgid "Ego" | ||
4640 | msgstr "" | ||
4641 | |||
4642 | #: src/identity-provider/gnunet-idp.c:386 | ||
4643 | msgid "Audience (relying party)" | ||
4644 | msgstr "" | ||
4645 | |||
4646 | #: src/identity-provider/gnunet-idp.c:390 | ||
4647 | msgid "List attributes for Ego" | ||
4648 | msgstr "" | ||
4649 | |||
4650 | #: src/identity-provider/gnunet-idp.c:395 | ||
4651 | msgid "Issue a ticket" | ||
4652 | msgstr "" | ||
4653 | |||
4654 | #: src/identity-provider/gnunet-idp.c:400 | ||
4655 | msgid "Consume a ticket" | ||
4656 | msgstr "" | ||
4657 | |||
4658 | #: src/identity-provider/gnunet-idp.c:405 | ||
4659 | msgid "Revoke a ticket" | ||
4660 | msgstr "" | ||
4661 | |||
4662 | #: src/identity-provider/identity_provider_api.c:429 | ||
4663 | #, fuzzy | ||
4664 | msgid "failed to store record\n" | ||
4665 | msgstr "Échec du démarrage de %s\n" | ||
4666 | |||
4667 | #: src/identity-provider/plugin_rest_identity_provider.c:1175 | ||
4668 | msgid "Identity Provider REST API initialized\n" | ||
4669 | msgstr "" | ||
4670 | |||
4671 | #: src/identity/gnunet-identity.c:179 | 4509 | #: src/identity/gnunet-identity.c:179 |
4672 | #, c-format | 4510 | #, c-format |
4673 | msgid "Failed to create ego: %s\n" | 4511 | msgid "Failed to create ego: %s\n" |
@@ -4755,10 +4593,31 @@ msgstr "" | |||
4755 | msgid "Failed to create directory `%s' for storing egos\n" | 4593 | msgid "Failed to create directory `%s' for storing egos\n" |
4756 | msgstr "" | 4594 | msgstr "" |
4757 | 4595 | ||
4758 | #: src/identity/plugin_rest_identity.c:964 | 4596 | #: src/identity/plugin_rest_identity.c:967 |
4759 | msgid "Identity REST API initialized\n" | 4597 | msgid "Identity REST API initialized\n" |
4760 | msgstr "" | 4598 | msgstr "" |
4761 | 4599 | ||
4600 | #: src/identity-provider/gnunet-identity-token.c:66 | ||
4601 | msgid "Option `-t' is required\n" | ||
4602 | msgstr "" | ||
4603 | |||
4604 | #: src/identity-provider/gnunet-identity-token.c:77 | ||
4605 | #, c-format | ||
4606 | msgid "Token `%s' is malformed\n" | ||
4607 | msgstr "" | ||
4608 | |||
4609 | #: src/identity-provider/gnunet-identity-token.c:166 | ||
4610 | msgid "GNUid token" | ||
4611 | msgstr "" | ||
4612 | |||
4613 | #: src/identity-provider/gnunet-identity-token.c:171 | ||
4614 | msgid "Print token contents" | ||
4615 | msgstr "" | ||
4616 | |||
4617 | #: src/identity-provider/plugin_rest_identity_provider.c:1166 | ||
4618 | msgid "Identity Token REST API initialized\n" | ||
4619 | msgstr "" | ||
4620 | |||
4762 | #: src/json/json.c:119 | 4621 | #: src/json/json.c:119 |
4763 | #, fuzzy, c-format | 4622 | #, fuzzy, c-format |
4764 | msgid "Failed to parse JSON in option `%s': %s (%s)\n" | 4623 | msgid "Failed to parse JSON in option `%s': %s (%s)\n" |
@@ -4856,77 +4715,19 @@ msgstr "Résolution de « %s » échouée\n" | |||
4856 | msgid "flat plugin running\n" | 4715 | msgid "flat plugin running\n" |
4857 | msgstr "" | 4716 | msgstr "" |
4858 | 4717 | ||
4859 | #: src/namestore/gnunet-namestore-fcfsd.c:508 | ||
4860 | #, c-format | ||
4861 | msgid "Unsupported form value `%s'\n" | ||
4862 | msgstr "" | ||
4863 | |||
4864 | #: src/namestore/gnunet-namestore-fcfsd.c:535 | ||
4865 | #, c-format | ||
4866 | msgid "Failed to create record for domain `%s': %s\n" | ||
4867 | msgstr "" | ||
4868 | |||
4869 | #: src/namestore/gnunet-namestore-fcfsd.c:555 | ||
4870 | msgid "Error when mapping zone to name\n" | ||
4871 | msgstr "" | ||
4872 | |||
4873 | #: src/namestore/gnunet-namestore-fcfsd.c:585 | ||
4874 | #, c-format | ||
4875 | msgid "Found existing name `%s' for the given key\n" | ||
4876 | msgstr "" | ||
4877 | |||
4878 | #: src/namestore/gnunet-namestore-fcfsd.c:662 | ||
4879 | #, c-format | ||
4880 | msgid "Found %u existing records for domain `%s'\n" | ||
4881 | msgstr "" | ||
4882 | |||
4883 | #: src/namestore/gnunet-namestore-fcfsd.c:718 | ||
4884 | #, c-format | ||
4885 | msgid "Failed to create page for `%s'\n" | ||
4886 | msgstr "" | ||
4887 | |||
4888 | #: src/namestore/gnunet-namestore-fcfsd.c:734 | ||
4889 | #, c-format | ||
4890 | msgid "Failed to setup post processor for `%s'\n" | ||
4891 | msgstr "" | ||
4892 | |||
4893 | #: src/namestore/gnunet-namestore-fcfsd.c:770 | ||
4894 | msgid "Domain name must not contain `.'\n" | ||
4895 | msgstr "" | ||
4896 | |||
4897 | #: src/namestore/gnunet-namestore-fcfsd.c:778 | ||
4898 | msgid "Domain name must not contain `+'\n" | ||
4899 | msgstr "" | ||
4900 | |||
4901 | #: src/namestore/gnunet-namestore-fcfsd.c:974 | ||
4902 | msgid "No ego configured for `fcfsd` subsystem\n" | ||
4903 | msgstr "" | ||
4904 | |||
4905 | #: src/namestore/gnunet-namestore-fcfsd.c:1000 | ||
4906 | msgid "Failed to start HTTP server\n" | ||
4907 | msgstr "" | ||
4908 | |||
4909 | #: src/namestore/gnunet-namestore-fcfsd.c:1042 | ||
4910 | msgid "Failed to connect to identity\n" | ||
4911 | msgstr "" | ||
4912 | |||
4913 | #: src/namestore/gnunet-namestore-fcfsd.c:1074 | ||
4914 | msgid "GNU Name System First Come First Serve name registration service" | ||
4915 | msgstr "" | ||
4916 | |||
4917 | #: src/namestore/gnunet-namestore.c:301 | 4718 | #: src/namestore/gnunet-namestore.c:301 |
4918 | #, c-format | 4719 | #, c-format |
4919 | msgid "Adding record failed: %s\n" | 4720 | msgid "Adding record failed: %s\n" |
4920 | msgstr "" | 4721 | msgstr "" |
4921 | 4722 | ||
4922 | #: src/namestore/gnunet-namestore.c:330 | 4723 | #: src/namestore/gnunet-namestore.c:330 |
4923 | #: src/namestore/plugin_rest_namestore.c:567 | 4724 | #: src/namestore/plugin_rest_namestore.c:562 |
4924 | #, c-format | 4725 | #, c-format |
4925 | msgid "Deleting record failed, record does not exist%s%s\n" | 4726 | msgid "Deleting record failed, record does not exist%s%s\n" |
4926 | msgstr "" | 4727 | msgstr "" |
4927 | 4728 | ||
4928 | #: src/namestore/gnunet-namestore.c:337 | 4729 | #: src/namestore/gnunet-namestore.c:337 |
4929 | #: src/namestore/plugin_rest_namestore.c:576 | 4730 | #: src/namestore/plugin_rest_namestore.c:571 |
4930 | #, c-format | 4731 | #, c-format |
4931 | msgid "Deleting record failed%s%s\n" | 4732 | msgid "Deleting record failed%s%s\n" |
4932 | msgstr "" | 4733 | msgstr "" |
@@ -4944,7 +4745,7 @@ msgid "Records already exist under `%s', cannot add `%s' record.\n" | |||
4944 | msgstr "" | 4745 | msgstr "" |
4945 | 4746 | ||
4946 | #: src/namestore/gnunet-namestore.c:698 | 4747 | #: src/namestore/gnunet-namestore.c:698 |
4947 | #: src/namestore/plugin_rest_namestore.c:602 | 4748 | #: src/namestore/plugin_rest_namestore.c:597 |
4948 | #, c-format | 4749 | #, c-format |
4949 | msgid "There are no records under label `%s' that could be deleted.\n" | 4750 | msgid "There are no records under label `%s' that could be deleted.\n" |
4950 | msgstr "" | 4751 | msgstr "" |
@@ -4955,11 +4756,23 @@ msgid "" | |||
4955 | "There are no records under label `%s' that match the request for deletion.\n" | 4756 | "There are no records under label `%s' that match the request for deletion.\n" |
4956 | msgstr "" | 4757 | msgstr "" |
4957 | 4758 | ||
4759 | #: src/namestore/gnunet-namestore.c:776 | ||
4760 | #: src/namestore/plugin_rest_namestore.c:1004 | ||
4761 | #, c-format | ||
4762 | msgid "Ego `%s' not known to identity service\n" | ||
4763 | msgstr "" | ||
4764 | |||
4958 | #: src/namestore/gnunet-namestore.c:791 | 4765 | #: src/namestore/gnunet-namestore.c:791 |
4959 | #, c-format | 4766 | #, c-format |
4960 | msgid "No options given\n" | 4767 | msgid "No options given\n" |
4961 | msgstr "" | 4768 | msgstr "" |
4962 | 4769 | ||
4770 | #: src/namestore/gnunet-namestore.c:802 | ||
4771 | #: src/namestore/gnunet-namestore-fcfsd.c:1034 | ||
4772 | #: src/namestore/plugin_rest_namestore.c:1017 | ||
4773 | msgid "Failed to connect to namestore\n" | ||
4774 | msgstr "" | ||
4775 | |||
4963 | #: src/namestore/gnunet-namestore.c:810 src/namestore/gnunet-namestore.c:819 | 4776 | #: src/namestore/gnunet-namestore.c:810 src/namestore/gnunet-namestore.c:819 |
4964 | #: src/namestore/gnunet-namestore.c:838 src/namestore/gnunet-namestore.c:861 | 4777 | #: src/namestore/gnunet-namestore.c:838 src/namestore/gnunet-namestore.c:861 |
4965 | #: src/namestore/gnunet-namestore.c:915 | 4778 | #: src/namestore/gnunet-namestore.c:915 |
@@ -4973,14 +4786,14 @@ msgid "add" | |||
4973 | msgstr "ajouter" | 4786 | msgstr "ajouter" |
4974 | 4787 | ||
4975 | #: src/namestore/gnunet-namestore.c:829 | 4788 | #: src/namestore/gnunet-namestore.c:829 |
4976 | #: src/namestore/plugin_rest_namestore.c:676 | 4789 | #: src/namestore/plugin_rest_namestore.c:671 |
4977 | #, c-format | 4790 | #, c-format |
4978 | msgid "Unsupported type `%s'\n" | 4791 | msgid "Unsupported type `%s'\n" |
4979 | msgstr "" | 4792 | msgstr "" |
4980 | 4793 | ||
4981 | #: src/namestore/gnunet-namestore.c:851 | 4794 | #: src/namestore/gnunet-namestore.c:851 |
4982 | #: src/namestore/plugin_rest_namestore.c:694 | 4795 | #: src/namestore/plugin_rest_namestore.c:689 |
4983 | #: src/namestore/plugin_rest_namestore.c:734 | 4796 | #: src/namestore/plugin_rest_namestore.c:729 |
4984 | #, c-format | 4797 | #, c-format |
4985 | msgid "Value `%s' invalid for record type `%s'\n" | 4798 | msgid "Value `%s' invalid for record type `%s'\n" |
4986 | msgstr "" | 4799 | msgstr "" |
@@ -5010,13 +4823,13 @@ msgid "Invalid nick `%s'\n" | |||
5010 | msgstr "" | 4823 | msgstr "" |
5011 | 4824 | ||
5012 | #: src/namestore/gnunet-namestore.c:1051 | 4825 | #: src/namestore/gnunet-namestore.c:1051 |
5013 | #: src/namestore/plugin_rest_namestore.c:1052 | 4826 | #: src/namestore/plugin_rest_namestore.c:1047 |
5014 | #, c-format | 4827 | #, c-format |
5015 | msgid "No default ego configured in identity service\n" | 4828 | msgid "No default ego configured in identity service\n" |
5016 | msgstr "" | 4829 | msgstr "" |
5017 | 4830 | ||
5018 | #: src/namestore/gnunet-namestore.c:1108 | 4831 | #: src/namestore/gnunet-namestore.c:1108 |
5019 | #: src/namestore/plugin_rest_namestore.c:1148 | 4832 | #: src/namestore/plugin_rest_namestore.c:1143 |
5020 | #, c-format | 4833 | #, c-format |
5021 | msgid "Cannot connect to identity service\n" | 4834 | msgid "Cannot connect to identity service\n" |
5022 | msgstr "" | 4835 | msgstr "" |
@@ -5076,6 +4889,64 @@ msgstr "" | |||
5076 | msgid "name of the ego controlling the zone" | 4889 | msgid "name of the ego controlling the zone" |
5077 | msgstr "" | 4890 | msgstr "" |
5078 | 4891 | ||
4892 | #: src/namestore/gnunet-namestore-fcfsd.c:508 | ||
4893 | #, c-format | ||
4894 | msgid "Unsupported form value `%s'\n" | ||
4895 | msgstr "" | ||
4896 | |||
4897 | #: src/namestore/gnunet-namestore-fcfsd.c:535 | ||
4898 | #, c-format | ||
4899 | msgid "Failed to create record for domain `%s': %s\n" | ||
4900 | msgstr "" | ||
4901 | |||
4902 | #: src/namestore/gnunet-namestore-fcfsd.c:555 | ||
4903 | msgid "Error when mapping zone to name\n" | ||
4904 | msgstr "" | ||
4905 | |||
4906 | #: src/namestore/gnunet-namestore-fcfsd.c:585 | ||
4907 | #, c-format | ||
4908 | msgid "Found existing name `%s' for the given key\n" | ||
4909 | msgstr "" | ||
4910 | |||
4911 | #: src/namestore/gnunet-namestore-fcfsd.c:662 | ||
4912 | #, c-format | ||
4913 | msgid "Found %u existing records for domain `%s'\n" | ||
4914 | msgstr "" | ||
4915 | |||
4916 | #: src/namestore/gnunet-namestore-fcfsd.c:718 | ||
4917 | #, c-format | ||
4918 | msgid "Failed to create page for `%s'\n" | ||
4919 | msgstr "" | ||
4920 | |||
4921 | #: src/namestore/gnunet-namestore-fcfsd.c:734 | ||
4922 | #, c-format | ||
4923 | msgid "Failed to setup post processor for `%s'\n" | ||
4924 | msgstr "" | ||
4925 | |||
4926 | #: src/namestore/gnunet-namestore-fcfsd.c:770 | ||
4927 | msgid "Domain name must not contain `.'\n" | ||
4928 | msgstr "" | ||
4929 | |||
4930 | #: src/namestore/gnunet-namestore-fcfsd.c:778 | ||
4931 | msgid "Domain name must not contain `+'\n" | ||
4932 | msgstr "" | ||
4933 | |||
4934 | #: src/namestore/gnunet-namestore-fcfsd.c:974 | ||
4935 | msgid "No ego configured for `fcfsd` subsystem\n" | ||
4936 | msgstr "" | ||
4937 | |||
4938 | #: src/namestore/gnunet-namestore-fcfsd.c:1000 | ||
4939 | msgid "Failed to start HTTP server\n" | ||
4940 | msgstr "" | ||
4941 | |||
4942 | #: src/namestore/gnunet-namestore-fcfsd.c:1042 | ||
4943 | msgid "Failed to connect to identity\n" | ||
4944 | msgstr "" | ||
4945 | |||
4946 | #: src/namestore/gnunet-namestore-fcfsd.c:1074 | ||
4947 | msgid "GNU Name System First Come First Serve name registration service" | ||
4948 | msgstr "" | ||
4949 | |||
5079 | #: src/namestore/gnunet-service-namestore.c:615 | 4950 | #: src/namestore/gnunet-service-namestore.c:615 |
5080 | #, c-format | 4951 | #, c-format |
5081 | msgid "Failed to replicate block in namecache: %s\n" | 4952 | msgid "Failed to replicate block in namecache: %s\n" |
@@ -5089,7 +4960,7 @@ msgstr "" | |||
5089 | msgid "flat file database running\n" | 4960 | msgid "flat file database running\n" |
5090 | msgstr "" | 4961 | msgstr "" |
5091 | 4962 | ||
5092 | #: src/namestore/plugin_rest_namestore.c:1193 | 4963 | #: src/namestore/plugin_rest_namestore.c:1188 |
5093 | msgid "Namestore REST API initialized\n" | 4964 | msgid "Namestore REST API initialized\n" |
5094 | msgstr "" | 4965 | msgstr "" |
5095 | 4966 | ||
@@ -5364,6 +5235,10 @@ msgstr "" | |||
5364 | msgid "`upnpc' command not found\n" | 5235 | msgid "`upnpc' command not found\n" |
5365 | msgstr "" | 5236 | msgstr "" |
5366 | 5237 | ||
5238 | #: src/nse/gnunet-nse.c:122 | ||
5239 | msgid "Show network size estimates from NSE service." | ||
5240 | msgstr "" | ||
5241 | |||
5367 | #: src/nse/gnunet-nse-profiler.c:842 | 5242 | #: src/nse/gnunet-nse-profiler.c:842 |
5368 | msgid "limit to the number of connections to NSE services, 0 for none" | 5243 | msgid "limit to the number of connections to NSE services, 0 for none" |
5369 | msgstr "" | 5244 | msgstr "" |
@@ -5388,15 +5263,65 @@ msgstr "" | |||
5388 | msgid "Measure quality and performance of the NSE service." | 5263 | msgid "Measure quality and performance of the NSE service." |
5389 | msgstr "" | 5264 | msgstr "" |
5390 | 5265 | ||
5391 | #: src/nse/gnunet-nse.c:122 | ||
5392 | msgid "Show network size estimates from NSE service." | ||
5393 | msgstr "" | ||
5394 | |||
5395 | #: src/nse/gnunet-service-nse.c:1534 | 5266 | #: src/nse/gnunet-service-nse.c:1534 |
5396 | #: src/revocation/gnunet-service-revocation.c:838 src/util/gnunet-scrypt.c:276 | 5267 | #: src/revocation/gnunet-service-revocation.c:840 src/util/gnunet-scrypt.c:276 |
5397 | msgid "Value is too large.\n" | 5268 | msgid "Value is too large.\n" |
5398 | msgstr "" | 5269 | msgstr "" |
5399 | 5270 | ||
5271 | #: src/peerinfo/gnunet-service-peerinfo.c:178 | ||
5272 | #, c-format | ||
5273 | msgid "Removing expired address of transport `%s'\n" | ||
5274 | msgstr "" | ||
5275 | |||
5276 | #: src/peerinfo/gnunet-service-peerinfo.c:310 | ||
5277 | #, c-format | ||
5278 | msgid "Failed to parse HELLO in file `%s': %s\n" | ||
5279 | msgstr "" | ||
5280 | |||
5281 | #: src/peerinfo/gnunet-service-peerinfo.c:331 | ||
5282 | #: src/peerinfo/gnunet-service-peerinfo.c:362 | ||
5283 | #, c-format | ||
5284 | msgid "Failed to parse HELLO in file `%s'\n" | ||
5285 | msgstr "" | ||
5286 | |||
5287 | #: src/peerinfo/gnunet-service-peerinfo.c:446 | ||
5288 | msgid "# peers known" | ||
5289 | msgstr "" | ||
5290 | |||
5291 | #: src/peerinfo/gnunet-service-peerinfo.c:489 | ||
5292 | #, c-format | ||
5293 | msgid "" | ||
5294 | "File `%s' in directory `%s' does not match naming convention. Removed.\n" | ||
5295 | msgstr "" | ||
5296 | |||
5297 | #: src/peerinfo/gnunet-service-peerinfo.c:655 | ||
5298 | #, c-format | ||
5299 | msgid "Scanning directory `%s'\n" | ||
5300 | msgstr "" | ||
5301 | |||
5302 | #: src/peerinfo/gnunet-service-peerinfo.c:663 | ||
5303 | #, c-format | ||
5304 | msgid "Still no peers found in `%s'!\n" | ||
5305 | msgstr "" | ||
5306 | |||
5307 | #: src/peerinfo/gnunet-service-peerinfo.c:1080 | ||
5308 | #, c-format | ||
5309 | msgid "Cleaning up directory `%s'\n" | ||
5310 | msgstr "" | ||
5311 | |||
5312 | #: src/peerinfo/gnunet-service-peerinfo.c:1409 | ||
5313 | #, c-format | ||
5314 | msgid "Importing HELLOs from `%s'\n" | ||
5315 | msgstr "" | ||
5316 | |||
5317 | #: src/peerinfo/gnunet-service-peerinfo.c:1422 | ||
5318 | msgid "Skipping import of included HELLOs\n" | ||
5319 | msgstr "" | ||
5320 | |||
5321 | #: src/peerinfo/peerinfo_api.c:220 | ||
5322 | msgid "Failed to receive response from `PEERINFO' service." | ||
5323 | msgstr "" | ||
5324 | |||
5400 | #: src/peerinfo-tool/gnunet-peerinfo.c:239 | 5325 | #: src/peerinfo-tool/gnunet-peerinfo.c:239 |
5401 | #, c-format | 5326 | #, c-format |
5402 | msgid "%sPeer `%s'\n" | 5327 | msgid "%sPeer `%s'\n" |
@@ -5486,60 +5411,6 @@ msgstr "" | |||
5486 | msgid "Failed to load transport plugin for `%s'\n" | 5411 | msgid "Failed to load transport plugin for `%s'\n" |
5487 | msgstr "" | 5412 | msgstr "" |
5488 | 5413 | ||
5489 | #: src/peerinfo/gnunet-service-peerinfo.c:178 | ||
5490 | #, c-format | ||
5491 | msgid "Removing expired address of transport `%s'\n" | ||
5492 | msgstr "" | ||
5493 | |||
5494 | #: src/peerinfo/gnunet-service-peerinfo.c:310 | ||
5495 | #, c-format | ||
5496 | msgid "Failed to parse HELLO in file `%s': %s\n" | ||
5497 | msgstr "" | ||
5498 | |||
5499 | #: src/peerinfo/gnunet-service-peerinfo.c:331 | ||
5500 | #: src/peerinfo/gnunet-service-peerinfo.c:362 | ||
5501 | #, c-format | ||
5502 | msgid "Failed to parse HELLO in file `%s'\n" | ||
5503 | msgstr "" | ||
5504 | |||
5505 | #: src/peerinfo/gnunet-service-peerinfo.c:446 | ||
5506 | msgid "# peers known" | ||
5507 | msgstr "" | ||
5508 | |||
5509 | #: src/peerinfo/gnunet-service-peerinfo.c:489 | ||
5510 | #, c-format | ||
5511 | msgid "" | ||
5512 | "File `%s' in directory `%s' does not match naming convention. Removed.\n" | ||
5513 | msgstr "" | ||
5514 | |||
5515 | #: src/peerinfo/gnunet-service-peerinfo.c:655 | ||
5516 | #, c-format | ||
5517 | msgid "Scanning directory `%s'\n" | ||
5518 | msgstr "" | ||
5519 | |||
5520 | #: src/peerinfo/gnunet-service-peerinfo.c:663 | ||
5521 | #, c-format | ||
5522 | msgid "Still no peers found in `%s'!\n" | ||
5523 | msgstr "" | ||
5524 | |||
5525 | #: src/peerinfo/gnunet-service-peerinfo.c:1076 | ||
5526 | #, c-format | ||
5527 | msgid "Cleaning up directory `%s'\n" | ||
5528 | msgstr "" | ||
5529 | |||
5530 | #: src/peerinfo/gnunet-service-peerinfo.c:1405 | ||
5531 | #, c-format | ||
5532 | msgid "Importing HELLOs from `%s'\n" | ||
5533 | msgstr "" | ||
5534 | |||
5535 | #: src/peerinfo/gnunet-service-peerinfo.c:1418 | ||
5536 | msgid "Skipping import of included HELLOs\n" | ||
5537 | msgstr "" | ||
5538 | |||
5539 | #: src/peerinfo/peerinfo_api.c:220 | ||
5540 | msgid "Failed to receive response from `PEERINFO' service." | ||
5541 | msgstr "" | ||
5542 | |||
5543 | #: src/peerstore/gnunet-peerstore.c:91 | 5414 | #: src/peerstore/gnunet-peerstore.c:91 |
5544 | msgid "peerstore" | 5415 | msgid "peerstore" |
5545 | msgstr "" | 5416 | msgstr "" |
@@ -5954,12 +5825,12 @@ msgstr "" | |||
5954 | msgid "# revocation set unions completed" | 5825 | msgid "# revocation set unions completed" |
5955 | msgstr "" | 5826 | msgstr "" |
5956 | 5827 | ||
5957 | #: src/revocation/gnunet-service-revocation.c:524 | 5828 | #: src/revocation/gnunet-service-revocation.c:525 |
5958 | #: src/revocation/gnunet-service-revocation.c:771 | 5829 | #: src/revocation/gnunet-service-revocation.c:773 |
5959 | msgid "SET service crashed, terminating revocation service\n" | 5830 | msgid "SET service crashed, terminating revocation service\n" |
5960 | msgstr "" | 5831 | msgstr "" |
5961 | 5832 | ||
5962 | #: src/revocation/gnunet-service-revocation.c:862 | 5833 | #: src/revocation/gnunet-service-revocation.c:864 |
5963 | msgid "Could not open revocation database file!" | 5834 | msgid "Could not open revocation database file!" |
5964 | msgstr "" | 5835 | msgstr "" |
5965 | 5836 | ||
@@ -6021,10 +5892,10 @@ msgstr "" | |||
6021 | msgid "Calculate the Vectorproduct with a GNUnet peer." | 5892 | msgid "Calculate the Vectorproduct with a GNUnet peer." |
6022 | msgstr "" | 5893 | msgstr "" |
6023 | 5894 | ||
6024 | #: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1172 | ||
6025 | #: src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c:1063 | ||
6026 | #: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1401 | 5895 | #: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1401 |
6027 | #: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1345 | 5896 | #: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1345 |
5897 | #: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1172 | ||
5898 | #: src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c:1063 | ||
6028 | msgid "Connect to CADET failed\n" | 5899 | msgid "Connect to CADET failed\n" |
6029 | msgstr "" | 5900 | msgstr "" |
6030 | 5901 | ||
@@ -6235,7 +6106,7 @@ msgstr "Échec du démarrage de %s\n" | |||
6235 | msgid "Wrote %llu bytes of statistics to `%s'\n" | 6106 | msgid "Wrote %llu bytes of statistics to `%s'\n" |
6236 | msgstr "" | 6107 | msgstr "" |
6237 | 6108 | ||
6238 | #: src/statistics/gnunet-service-statistics.c:1084 | 6109 | #: src/statistics/gnunet-service-statistics.c:1086 |
6239 | #, c-format | 6110 | #, c-format |
6240 | msgid "Loading %llu bytes of statistics from `%s'\n" | 6111 | msgid "Loading %llu bytes of statistics from `%s'\n" |
6241 | msgstr "" | 6112 | msgstr "" |
@@ -6361,7 +6232,7 @@ msgid "Invalid argument `%s'; expecting unsigned int\n" | |||
6361 | msgstr "" | 6232 | msgstr "" |
6362 | 6233 | ||
6363 | #: src/testbed/generate-underlay-topology.c:342 | 6234 | #: src/testbed/generate-underlay-topology.c:342 |
6364 | #: src/testbed/gnunet-testbed-profiler.c:284 | 6235 | #: src/testbed/gnunet-testbed-profiler.c:283 |
6365 | msgid "create COUNT number of peers" | 6236 | msgid "create COUNT number of peers" |
6366 | msgstr "" | 6237 | msgstr "" |
6367 | 6238 | ||
@@ -6399,13 +6270,13 @@ msgid "" | |||
6399 | "deployments" | 6270 | "deployments" |
6400 | msgstr "" | 6271 | msgstr "" |
6401 | 6272 | ||
6402 | #: src/testbed/gnunet-daemon-testbed-underlay.c:231 src/testing/list-keys.c:46 | 6273 | #: src/testbed/gnunet-daemon-testbed-underlay.c:233 src/testing/list-keys.c:46 |
6403 | #: src/testing/testing.c:288 src/util/gnunet-ecc.c:301 | 6274 | #: src/testing/testing.c:288 src/util/gnunet-ecc.c:306 |
6404 | #, c-format | 6275 | #, c-format |
6405 | msgid "Incorrect hostkey file format: %s\n" | 6276 | msgid "Incorrect hostkey file format: %s\n" |
6406 | msgstr "" | 6277 | msgstr "" |
6407 | 6278 | ||
6408 | #: src/testbed/gnunet-daemon-testbed-underlay.c:469 | 6279 | #: src/testbed/gnunet-daemon-testbed-underlay.c:471 |
6409 | msgid "Daemon to restrict underlay network in testbed deployments" | 6280 | msgid "Daemon to restrict underlay network in testbed deployments" |
6410 | msgstr "" | 6281 | msgstr "" |
6411 | 6282 | ||
@@ -6470,17 +6341,6 @@ msgstr "" | |||
6470 | msgid "%.s Unknown result code." | 6341 | msgid "%.s Unknown result code." |
6471 | msgstr "%.s Code d'erreur inconnu" | 6342 | msgstr "%.s Code d'erreur inconnu" |
6472 | 6343 | ||
6473 | #: src/testbed/gnunet-testbed-profiler.c:290 | ||
6474 | msgid "tolerate COUNT number of continious timeout failures" | ||
6475 | msgstr "" | ||
6476 | |||
6477 | #: src/testbed/gnunet-testbed-profiler.c:295 | ||
6478 | msgid "" | ||
6479 | "run profiler in non-interactive mode where upon testbed setup the profiler " | ||
6480 | "does not wait for a keystroke but continues to run until a termination " | ||
6481 | "signal is received" | ||
6482 | msgstr "" | ||
6483 | |||
6484 | #: src/testbed/gnunet_testbed_mpi_spawn.c:118 | 6344 | #: src/testbed/gnunet_testbed_mpi_spawn.c:118 |
6485 | msgid "Waiting for child to exit.\n" | 6345 | msgid "Waiting for child to exit.\n" |
6486 | msgstr "" | 6346 | msgstr "" |
@@ -6490,6 +6350,17 @@ msgstr "" | |||
6490 | msgid "Spawning process `%s'\n" | 6350 | msgid "Spawning process `%s'\n" |
6491 | msgstr "" | 6351 | msgstr "" |
6492 | 6352 | ||
6353 | #: src/testbed/gnunet-testbed-profiler.c:289 | ||
6354 | msgid "tolerate COUNT number of continious timeout failures" | ||
6355 | msgstr "" | ||
6356 | |||
6357 | #: src/testbed/gnunet-testbed-profiler.c:294 | ||
6358 | msgid "" | ||
6359 | "run profiler in non-interactive mode where upon testbed setup the profiler " | ||
6360 | "does not wait for a keystroke but continues to run until a termination " | ||
6361 | "signal is received" | ||
6362 | msgstr "" | ||
6363 | |||
6493 | #: src/testbed/testbed_api.c:410 | 6364 | #: src/testbed/testbed_api.c:410 |
6494 | #, c-format | 6365 | #, c-format |
6495 | msgid "Adding host %u failed with error: %s\n" | 6366 | msgid "Adding host %u failed with error: %s\n" |
@@ -6777,54 +6648,54 @@ msgstr "" | |||
6777 | msgid "GNUnet topology control" | 6648 | msgid "GNUnet topology control" |
6778 | msgstr "" | 6649 | msgstr "" |
6779 | 6650 | ||
6651 | #: src/transport/gnunet-service-transport_ats.c:141 | ||
6652 | msgid "# Addresses given to ATS" | ||
6653 | msgstr "" | ||
6654 | |||
6780 | #: src/transport/gnunet-service-transport.c:448 | 6655 | #: src/transport/gnunet-service-transport.c:448 |
6781 | msgid "# messages dropped due to slow client" | 6656 | msgid "# messages dropped due to slow client" |
6782 | msgstr "" | 6657 | msgstr "" |
6783 | 6658 | ||
6784 | #: src/transport/gnunet-service-transport.c:809 | 6659 | #: src/transport/gnunet-service-transport.c:818 |
6785 | msgid "# bytes payload dropped (other peer was not connected)" | 6660 | msgid "# bytes payload dropped (other peer was not connected)" |
6786 | msgstr "" | 6661 | msgstr "" |
6787 | 6662 | ||
6788 | #: src/transport/gnunet-service-transport.c:1539 | 6663 | #: src/transport/gnunet-service-transport.c:1551 |
6789 | msgid "# bytes payload discarded due to not connected peer" | 6664 | msgid "# bytes payload discarded due to not connected peer" |
6790 | msgstr "" | 6665 | msgstr "" |
6791 | 6666 | ||
6792 | #: src/transport/gnunet-service-transport.c:1699 | 6667 | #: src/transport/gnunet-service-transport.c:1711 |
6793 | msgid "# bytes total received" | 6668 | msgid "# bytes total received" |
6794 | msgstr "" | 6669 | msgstr "" |
6795 | 6670 | ||
6796 | #: src/transport/gnunet-service-transport.c:1796 | 6671 | #: src/transport/gnunet-service-transport.c:1808 |
6797 | msgid "# bytes payload received" | 6672 | msgid "# bytes payload received" |
6798 | msgstr "" | 6673 | msgstr "" |
6799 | 6674 | ||
6800 | #: src/transport/gnunet-service-transport.c:2113 | 6675 | #: src/transport/gnunet-service-transport.c:2125 |
6801 | #: src/transport/gnunet-service-transport.c:2585 | 6676 | #: src/transport/gnunet-service-transport.c:2597 |
6802 | msgid "# disconnects due to blacklist" | 6677 | msgid "# disconnects due to blacklist" |
6803 | msgstr "" | 6678 | msgstr "" |
6804 | 6679 | ||
6805 | #: src/transport/gnunet-service-transport.c:2589 | 6680 | #: src/transport/gnunet-service-transport.c:2601 |
6806 | #, c-format | 6681 | #, c-format |
6807 | msgid "Disallowing connection to peer `%s' on transport %s\n" | 6682 | msgid "Disallowing connection to peer `%s' on transport %s\n" |
6808 | msgstr "" | 6683 | msgstr "" |
6809 | 6684 | ||
6810 | #: src/transport/gnunet-service-transport.c:2697 | 6685 | #: src/transport/gnunet-service-transport.c:2709 |
6811 | #, c-format | 6686 | #, c-format |
6812 | msgid "Adding blacklisting entry for peer `%s'\n" | 6687 | msgid "Adding blacklisting entry for peer `%s'\n" |
6813 | msgstr "" | 6688 | msgstr "" |
6814 | 6689 | ||
6815 | #: src/transport/gnunet-service-transport.c:2706 | 6690 | #: src/transport/gnunet-service-transport.c:2718 |
6816 | #, c-format | 6691 | #, c-format |
6817 | msgid "Adding blacklisting entry for peer `%s':`%s'\n" | 6692 | msgid "Adding blacklisting entry for peer `%s':`%s'\n" |
6818 | msgstr "" | 6693 | msgstr "" |
6819 | 6694 | ||
6820 | #: src/transport/gnunet-service-transport.c:2771 | 6695 | #: src/transport/gnunet-service-transport.c:2783 |
6821 | msgid "Transport service is lacking key configuration settings. Exiting.\n" | 6696 | msgid "Transport service is lacking key configuration settings. Exiting.\n" |
6822 | msgstr "" | 6697 | msgstr "" |
6823 | 6698 | ||
6824 | #: src/transport/gnunet-service-transport_ats.c:141 | ||
6825 | msgid "# Addresses given to ATS" | ||
6826 | msgstr "" | ||
6827 | |||
6828 | #: src/transport/gnunet-service-transport_hello.c:195 | 6699 | #: src/transport/gnunet-service-transport_hello.c:195 |
6829 | msgid "# refreshed my HELLO" | 6700 | msgid "# refreshed my HELLO" |
6830 | msgstr "" | 6701 | msgstr "" |
@@ -6956,64 +6827,64 @@ msgstr "" | |||
6956 | msgid "SYN request from peer `%s' ignored due impending shutdown\n" | 6827 | msgid "SYN request from peer `%s' ignored due impending shutdown\n" |
6957 | msgstr "" | 6828 | msgstr "" |
6958 | 6829 | ||
6959 | #: src/transport/gnunet-service-transport_neighbours.c:2620 | 6830 | #: src/transport/gnunet-service-transport_neighbours.c:2623 |
6960 | msgid "# Attempts to switch addresses" | 6831 | msgid "# Attempts to switch addresses" |
6961 | msgstr "" | 6832 | msgstr "" |
6962 | 6833 | ||
6963 | #: src/transport/gnunet-service-transport_neighbours.c:3102 | 6834 | #: src/transport/gnunet-service-transport_neighbours.c:3105 |
6964 | msgid "# SYN_ACK messages received" | 6835 | msgid "# SYN_ACK messages received" |
6965 | msgstr "" | 6836 | msgstr "" |
6966 | 6837 | ||
6967 | #: src/transport/gnunet-service-transport_neighbours.c:3110 | 6838 | #: src/transport/gnunet-service-transport_neighbours.c:3113 |
6968 | msgid "# unexpected SYN_ACK messages (no peer)" | 6839 | msgid "# unexpected SYN_ACK messages (no peer)" |
6969 | msgstr "" | 6840 | msgstr "" |
6970 | 6841 | ||
6971 | #: src/transport/gnunet-service-transport_neighbours.c:3128 | 6842 | #: src/transport/gnunet-service-transport_neighbours.c:3131 |
6972 | #: src/transport/gnunet-service-transport_neighbours.c:3152 | 6843 | #: src/transport/gnunet-service-transport_neighbours.c:3155 |
6973 | msgid "# unexpected SYN_ACK messages (not ready)" | 6844 | msgid "# unexpected SYN_ACK messages (not ready)" |
6974 | msgstr "" | 6845 | msgstr "" |
6975 | 6846 | ||
6976 | #: src/transport/gnunet-service-transport_neighbours.c:3164 | 6847 | #: src/transport/gnunet-service-transport_neighbours.c:3167 |
6977 | msgid "# unexpected SYN_ACK messages (waiting on ATS)" | 6848 | msgid "# unexpected SYN_ACK messages (waiting on ATS)" |
6978 | msgstr "" | 6849 | msgstr "" |
6979 | 6850 | ||
6980 | #: src/transport/gnunet-service-transport_neighbours.c:3189 | 6851 | #: src/transport/gnunet-service-transport_neighbours.c:3192 |
6981 | msgid "# Successful attempts to switch addresses" | 6852 | msgid "# Successful attempts to switch addresses" |
6982 | msgstr "" | 6853 | msgstr "" |
6983 | 6854 | ||
6984 | #: src/transport/gnunet-service-transport_neighbours.c:3202 | 6855 | #: src/transport/gnunet-service-transport_neighbours.c:3205 |
6985 | msgid "# unexpected SYN_ACK messages (disconnecting)" | 6856 | msgid "# unexpected SYN_ACK messages (disconnecting)" |
6986 | msgstr "" | 6857 | msgstr "" |
6987 | 6858 | ||
6988 | #: src/transport/gnunet-service-transport_neighbours.c:3374 | 6859 | #: src/transport/gnunet-service-transport_neighbours.c:3377 |
6989 | msgid "# ACK messages received" | 6860 | msgid "# ACK messages received" |
6990 | msgstr "" | 6861 | msgstr "" |
6991 | 6862 | ||
6992 | #: src/transport/gnunet-service-transport_neighbours.c:3410 | 6863 | #: src/transport/gnunet-service-transport_neighbours.c:3413 |
6993 | msgid "# unexpected ACK messages" | 6864 | msgid "# unexpected ACK messages" |
6994 | msgstr "" | 6865 | msgstr "" |
6995 | 6866 | ||
6996 | #: src/transport/gnunet-service-transport_neighbours.c:3498 | 6867 | #: src/transport/gnunet-service-transport_neighbours.c:3501 |
6997 | msgid "# quota messages ignored (malformed)" | 6868 | msgid "# quota messages ignored (malformed)" |
6998 | msgstr "" | 6869 | msgstr "" |
6999 | 6870 | ||
7000 | #: src/transport/gnunet-service-transport_neighbours.c:3505 | 6871 | #: src/transport/gnunet-service-transport_neighbours.c:3508 |
7001 | msgid "# QUOTA messages received" | 6872 | msgid "# QUOTA messages received" |
7002 | msgstr "" | 6873 | msgstr "" |
7003 | 6874 | ||
7004 | #: src/transport/gnunet-service-transport_neighbours.c:3545 | 6875 | #: src/transport/gnunet-service-transport_neighbours.c:3548 |
7005 | msgid "# disconnect messages ignored (malformed)" | 6876 | msgid "# disconnect messages ignored (malformed)" |
7006 | msgstr "" | 6877 | msgstr "" |
7007 | 6878 | ||
7008 | #: src/transport/gnunet-service-transport_neighbours.c:3552 | 6879 | #: src/transport/gnunet-service-transport_neighbours.c:3555 |
7009 | msgid "# DISCONNECT messages received" | 6880 | msgid "# DISCONNECT messages received" |
7010 | msgstr "" | 6881 | msgstr "" |
7011 | 6882 | ||
7012 | #: src/transport/gnunet-service-transport_neighbours.c:3563 | 6883 | #: src/transport/gnunet-service-transport_neighbours.c:3566 |
7013 | msgid "# disconnect messages ignored (timestamp)" | 6884 | msgid "# disconnect messages ignored (timestamp)" |
7014 | msgstr "" | 6885 | msgstr "" |
7015 | 6886 | ||
7016 | #: src/transport/gnunet-service-transport_neighbours.c:3697 | 6887 | #: src/transport/gnunet-service-transport_neighbours.c:3700 |
7017 | msgid "# disconnected from peer upon explicit request" | 6888 | msgid "# disconnected from peer upon explicit request" |
7018 | msgstr "" | 6889 | msgstr "" |
7019 | 6890 | ||
@@ -7047,8 +6918,8 @@ msgstr "" | |||
7047 | 6918 | ||
7048 | #: src/transport/gnunet-service-transport_validation.c:491 | 6919 | #: src/transport/gnunet-service-transport_validation.c:491 |
7049 | #: src/transport/gnunet-service-transport_validation.c:677 | 6920 | #: src/transport/gnunet-service-transport_validation.c:677 |
7050 | #: src/transport/gnunet-service-transport_validation.c:988 | 6921 | #: src/transport/gnunet-service-transport_validation.c:997 |
7051 | #: src/transport/gnunet-service-transport_validation.c:1590 | 6922 | #: src/transport/gnunet-service-transport_validation.c:1609 |
7052 | msgid "# validations running" | 6923 | msgid "# validations running" |
7053 | msgstr "" | 6924 | msgstr "" |
7054 | 6925 | ||
@@ -7072,96 +6943,60 @@ msgstr "" | |||
7072 | msgid "# address revalidations started" | 6943 | msgid "# address revalidations started" |
7073 | msgstr "" | 6944 | msgstr "" |
7074 | 6945 | ||
7075 | #: src/transport/gnunet-service-transport_validation.c:1114 | 6946 | #: src/transport/gnunet-service-transport_validation.c:1123 |
7076 | msgid "# PING message for different peer received" | 6947 | msgid "# PING message for different peer received" |
7077 | msgstr "" | 6948 | msgstr "" |
7078 | 6949 | ||
7079 | #: src/transport/gnunet-service-transport_validation.c:1165 | 6950 | #: src/transport/gnunet-service-transport_validation.c:1174 |
7080 | #, c-format | 6951 | #, c-format |
7081 | msgid "Plugin `%s' not available, cannot confirm having this address\n" | 6952 | msgid "Plugin `%s' not available, cannot confirm having this address\n" |
7082 | msgstr "" | 6953 | msgstr "" |
7083 | 6954 | ||
7084 | #: src/transport/gnunet-service-transport_validation.c:1178 | 6955 | #: src/transport/gnunet-service-transport_validation.c:1187 |
7085 | msgid "# failed address checks during validation" | 6956 | msgid "# failed address checks during validation" |
7086 | msgstr "" | 6957 | msgstr "" |
7087 | 6958 | ||
7088 | #: src/transport/gnunet-service-transport_validation.c:1181 | 6959 | #: src/transport/gnunet-service-transport_validation.c:1190 |
7089 | #, c-format | 6960 | #, c-format |
7090 | msgid "Address `%s' is not one of my addresses, not confirming PING\n" | 6961 | msgid "Address `%s' is not one of my addresses, not confirming PING\n" |
7091 | msgstr "" | 6962 | msgstr "" |
7092 | 6963 | ||
7093 | #: src/transport/gnunet-service-transport_validation.c:1189 | 6964 | #: src/transport/gnunet-service-transport_validation.c:1198 |
7094 | msgid "# successful address checks during validation" | 6965 | msgid "# successful address checks during validation" |
7095 | msgstr "" | 6966 | msgstr "" |
7096 | 6967 | ||
7097 | #: src/transport/gnunet-service-transport_validation.c:1202 | 6968 | #: src/transport/gnunet-service-transport_validation.c:1211 |
7098 | #, c-format | 6969 | #, c-format |
7099 | msgid "" | 6970 | msgid "" |
7100 | "Not confirming PING from peer `%s' with address `%s' since I cannot confirm " | 6971 | "Not confirming PING from peer `%s' with address `%s' since I cannot confirm " |
7101 | "having this address.\n" | 6972 | "having this address.\n" |
7102 | msgstr "" | 6973 | msgstr "" |
7103 | 6974 | ||
7104 | #: src/transport/gnunet-service-transport_validation.c:1257 | 6975 | #: src/transport/gnunet-service-transport_validation.c:1266 |
7105 | #, c-format | 6976 | #, c-format |
7106 | msgid "Failed to create PONG signature for peer `%s'\n" | 6977 | msgid "Failed to create PONG signature for peer `%s'\n" |
7107 | msgstr "" | 6978 | msgstr "" |
7108 | 6979 | ||
7109 | #: src/transport/gnunet-service-transport_validation.c:1308 | 6980 | #: src/transport/gnunet-service-transport_validation.c:1317 |
7110 | msgid "# PONGs unicast via reliable transport" | 6981 | msgid "# PONGs unicast via reliable transport" |
7111 | msgstr "" | 6982 | msgstr "" |
7112 | 6983 | ||
7113 | #: src/transport/gnunet-service-transport_validation.c:1317 | 6984 | #: src/transport/gnunet-service-transport_validation.c:1326 |
7114 | msgid "# PONGs multicast to all available addresses" | 6985 | msgid "# PONGs multicast to all available addresses" |
7115 | msgstr "" | 6986 | msgstr "" |
7116 | 6987 | ||
7117 | #: src/transport/gnunet-service-transport_validation.c:1480 | 6988 | #: src/transport/gnunet-service-transport_validation.c:1499 |
7118 | msgid "# PONGs dropped, no matching pending validation" | 6989 | msgid "# PONGs dropped, no matching pending validation" |
7119 | msgstr "" | 6990 | msgstr "" |
7120 | 6991 | ||
7121 | #: src/transport/gnunet-service-transport_validation.c:1498 | 6992 | #: src/transport/gnunet-service-transport_validation.c:1517 |
7122 | msgid "# PONGs dropped, signature expired" | 6993 | msgid "# PONGs dropped, signature expired" |
7123 | msgstr "" | 6994 | msgstr "" |
7124 | 6995 | ||
7125 | #: src/transport/gnunet-service-transport_validation.c:1553 | 6996 | #: src/transport/gnunet-service-transport_validation.c:1572 |
7126 | msgid "# validations succeeded" | 6997 | msgid "# validations succeeded" |
7127 | msgstr "" | 6998 | msgstr "" |
7128 | 6999 | ||
7129 | #: src/transport/gnunet-transport-profiler.c:219 | ||
7130 | #, c-format | ||
7131 | msgid "%llu B in %llu ms == %.2f KB/s!\n" | ||
7132 | msgstr "" | ||
7133 | |||
7134 | #: src/transport/gnunet-transport-profiler.c:617 | ||
7135 | msgid "send data to peer" | ||
7136 | msgstr "" | ||
7137 | |||
7138 | #: src/transport/gnunet-transport-profiler.c:621 | ||
7139 | msgid "receive data from peer" | ||
7140 | msgstr "" | ||
7141 | |||
7142 | #: src/transport/gnunet-transport-profiler.c:626 | ||
7143 | msgid "iterations" | ||
7144 | msgstr "" | ||
7145 | |||
7146 | #: src/transport/gnunet-transport-profiler.c:631 | ||
7147 | #, fuzzy | ||
7148 | msgid "number of messages to send" | ||
7149 | msgstr "nombre de valeurs" | ||
7150 | |||
7151 | #: src/transport/gnunet-transport-profiler.c:636 | ||
7152 | msgid "message size to use" | ||
7153 | msgstr "" | ||
7154 | |||
7155 | #: src/transport/gnunet-transport-profiler.c:641 | ||
7156 | #: src/transport/gnunet-transport.c:1462 | ||
7157 | msgid "peer identity" | ||
7158 | msgstr "" | ||
7159 | |||
7160 | #: src/transport/gnunet-transport-profiler.c:652 | ||
7161 | #: src/transport/gnunet-transport.c:1482 | ||
7162 | msgid "Direct access to transport service." | ||
7163 | msgstr "" | ||
7164 | |||
7165 | #: src/transport/gnunet-transport.c:413 | 7000 | #: src/transport/gnunet-transport.c:413 |
7166 | #, c-format | 7001 | #, c-format |
7167 | msgid "Transmitted %llu bytes/s (%llu bytes in %s)\n" | 7002 | msgid "Transmitted %llu bytes/s (%llu bytes in %s)\n" |
@@ -7290,6 +7125,11 @@ msgstr "" | |||
7290 | msgid "do not resolve hostnames" | 7125 | msgid "do not resolve hostnames" |
7291 | msgstr "" | 7126 | msgstr "" |
7292 | 7127 | ||
7128 | #: src/transport/gnunet-transport.c:1462 | ||
7129 | #: src/transport/gnunet-transport-profiler.c:641 | ||
7130 | msgid "peer identity" | ||
7131 | msgstr "" | ||
7132 | |||
7293 | #: src/transport/gnunet-transport.c:1466 | 7133 | #: src/transport/gnunet-transport.c:1466 |
7294 | msgid "monitor plugin sessions" | 7134 | msgid "monitor plugin sessions" |
7295 | msgstr "" | 7135 | msgstr "" |
@@ -7298,6 +7138,37 @@ msgstr "" | |||
7298 | msgid "send data for benchmarking to the other peer (until CTRL-C)" | 7138 | msgid "send data for benchmarking to the other peer (until CTRL-C)" |
7299 | msgstr "" | 7139 | msgstr "" |
7300 | 7140 | ||
7141 | #: src/transport/gnunet-transport.c:1482 | ||
7142 | #: src/transport/gnunet-transport-profiler.c:652 | ||
7143 | msgid "Direct access to transport service." | ||
7144 | msgstr "" | ||
7145 | |||
7146 | #: src/transport/gnunet-transport-profiler.c:219 | ||
7147 | #, c-format | ||
7148 | msgid "%llu B in %llu ms == %.2f KB/s!\n" | ||
7149 | msgstr "" | ||
7150 | |||
7151 | #: src/transport/gnunet-transport-profiler.c:617 | ||
7152 | msgid "send data to peer" | ||
7153 | msgstr "" | ||
7154 | |||
7155 | #: src/transport/gnunet-transport-profiler.c:621 | ||
7156 | msgid "receive data from peer" | ||
7157 | msgstr "" | ||
7158 | |||
7159 | #: src/transport/gnunet-transport-profiler.c:626 | ||
7160 | msgid "iterations" | ||
7161 | msgstr "" | ||
7162 | |||
7163 | #: src/transport/gnunet-transport-profiler.c:631 | ||
7164 | #, fuzzy | ||
7165 | msgid "number of messages to send" | ||
7166 | msgstr "nombre de valeurs" | ||
7167 | |||
7168 | #: src/transport/gnunet-transport-profiler.c:636 | ||
7169 | msgid "message size to use" | ||
7170 | msgstr "" | ||
7171 | |||
7301 | #: src/transport/plugin_transport_http_client.c:1474 | 7172 | #: src/transport/plugin_transport_http_client.c:1474 |
7302 | #: src/transport/plugin_transport_http_server.c:2312 | 7173 | #: src/transport/plugin_transport_http_server.c:2312 |
7303 | #: src/transport/plugin_transport_http_server.c:3526 | 7174 | #: src/transport/plugin_transport_http_server.c:3526 |
@@ -7563,6 +7434,20 @@ msgstr "" | |||
7563 | msgid "TCP transport advertises itself as being on port %llu\n" | 7434 | msgid "TCP transport advertises itself as being on port %llu\n" |
7564 | msgstr "" | 7435 | msgstr "" |
7565 | 7436 | ||
7437 | #: src/transport/plugin_transport_udp_broadcasting.c:168 | ||
7438 | msgid "# Multicast HELLO beacons received via UDP" | ||
7439 | msgstr "" | ||
7440 | |||
7441 | #: src/transport/plugin_transport_udp_broadcasting.c:548 | ||
7442 | msgid "" | ||
7443 | "Disabling HELLO broadcasting due to friend-to-friend only configuration!\n" | ||
7444 | msgstr "" | ||
7445 | |||
7446 | #: src/transport/plugin_transport_udp_broadcasting.c:565 | ||
7447 | #, c-format | ||
7448 | msgid "Failed to set IPv4 broadcast option for broadcast socket on port %d\n" | ||
7449 | msgstr "" | ||
7450 | |||
7566 | #: src/transport/plugin_transport_udp.c:3366 | 7451 | #: src/transport/plugin_transport_udp.c:3366 |
7567 | #, c-format | 7452 | #, c-format |
7568 | msgid "" | 7453 | msgid "" |
@@ -7609,20 +7494,6 @@ msgstr "adresse invalide" | |||
7609 | msgid "Failed to create UDP network sockets\n" | 7494 | msgid "Failed to create UDP network sockets\n" |
7610 | msgstr "" | 7495 | msgstr "" |
7611 | 7496 | ||
7612 | #: src/transport/plugin_transport_udp_broadcasting.c:168 | ||
7613 | msgid "# Multicast HELLO beacons received via UDP" | ||
7614 | msgstr "" | ||
7615 | |||
7616 | #: src/transport/plugin_transport_udp_broadcasting.c:548 | ||
7617 | msgid "" | ||
7618 | "Disabling HELLO broadcasting due to friend-to-friend only configuration!\n" | ||
7619 | msgstr "" | ||
7620 | |||
7621 | #: src/transport/plugin_transport_udp_broadcasting.c:565 | ||
7622 | #, c-format | ||
7623 | msgid "Failed to set IPv4 broadcast option for broadcast socket on port %d\n" | ||
7624 | msgstr "" | ||
7625 | |||
7626 | #: src/transport/plugin_transport_unix.c:1403 | 7497 | #: src/transport/plugin_transport_unix.c:1403 |
7627 | #, c-format | 7498 | #, c-format |
7628 | msgid "Cannot create path to `%s'\n" | 7499 | msgid "Cannot create path to `%s'\n" |
@@ -7727,7 +7598,7 @@ msgid "" | |||
7727 | "`GNUNET_SERVER_receive_done' after %s\n" | 7598 | "`GNUNET_SERVER_receive_done' after %s\n" |
7728 | msgstr "" | 7599 | msgstr "" |
7729 | 7600 | ||
7730 | #: src/transport/tcp_service_legacy.c:339 src/util/service.c:2336 | 7601 | #: src/transport/tcp_service_legacy.c:339 src/util/service.c:2346 |
7731 | #, c-format | 7602 | #, c-format |
7732 | msgid "Unknown address family %d\n" | 7603 | msgid "Unknown address family %d\n" |
7733 | msgstr "" | 7604 | msgstr "" |
@@ -7803,18 +7674,18 @@ msgstr "" | |||
7803 | msgid "do daemonize (detach from terminal)" | 7674 | msgid "do daemonize (detach from terminal)" |
7804 | msgstr "" | 7675 | msgstr "" |
7805 | 7676 | ||
7806 | #: src/transport/tcp_service_legacy.c:1448 src/util/program.c:244 | 7677 | #: src/transport/tcp_service_legacy.c:1448 src/util/program.c:255 |
7807 | #: src/util/service.c:1790 | 7678 | #: src/util/service.c:1790 |
7808 | #, c-format | 7679 | #, c-format |
7809 | msgid "Malformed configuration file `%s', exit ...\n" | 7680 | msgid "Malformed configuration file `%s', exit ...\n" |
7810 | msgstr "" | 7681 | msgstr "" |
7811 | 7682 | ||
7812 | #: src/transport/tcp_service_legacy.c:1458 src/util/program.c:261 | 7683 | #: src/transport/tcp_service_legacy.c:1458 src/util/program.c:272 |
7813 | #: src/util/service.c:1801 | 7684 | #: src/util/service.c:1801 |
7814 | msgid "Malformed configuration, exit ...\n" | 7685 | msgid "Malformed configuration, exit ...\n" |
7815 | msgstr "" | 7686 | msgstr "" |
7816 | 7687 | ||
7817 | #: src/transport/tcp_service_legacy.c:1463 src/util/program.c:256 | 7688 | #: src/transport/tcp_service_legacy.c:1463 src/util/program.c:267 |
7818 | #: src/util/service.c:1807 | 7689 | #: src/util/service.c:1807 |
7819 | #, c-format | 7690 | #, c-format |
7820 | msgid "Could not access configuration file `%s'\n" | 7691 | msgid "Could not access configuration file `%s'\n" |
@@ -7854,7 +7725,7 @@ msgstr "" | |||
7854 | msgid "Metadata `%s' failed to deserialize" | 7725 | msgid "Metadata `%s' failed to deserialize" |
7855 | msgstr "" | 7726 | msgstr "" |
7856 | 7727 | ||
7857 | #: src/util/client.c:882 | 7728 | #: src/util/client.c:911 |
7858 | #, c-format | 7729 | #, c-format |
7859 | msgid "Need a non-empty hostname for service `%s'.\n" | 7730 | msgid "Need a non-empty hostname for service `%s'.\n" |
7860 | msgstr "" | 7731 | msgstr "" |
@@ -7952,22 +7823,22 @@ msgid "" | |||
7952 | "%llu)\n" | 7823 | "%llu)\n" |
7953 | msgstr "" | 7824 | msgstr "" |
7954 | 7825 | ||
7955 | #: src/util/crypto_ecc.c:777 | 7826 | #: src/util/crypto_ecc.c:810 |
7956 | #, c-format | 7827 | #, c-format |
7957 | msgid "ECC signing failed at %s:%d: %s\n" | 7828 | msgid "ECC signing failed at %s:%d: %s\n" |
7958 | msgstr "" | 7829 | msgstr "" |
7959 | 7830 | ||
7960 | #: src/util/crypto_ecc.c:827 | 7831 | #: src/util/crypto_ecc.c:860 |
7961 | #, c-format | 7832 | #, c-format |
7962 | msgid "EdDSA signing failed at %s:%d: %s\n" | 7833 | msgid "EdDSA signing failed at %s:%d: %s\n" |
7963 | msgstr "" | 7834 | msgstr "" |
7964 | 7835 | ||
7965 | #: src/util/crypto_ecc.c:901 | 7836 | #: src/util/crypto_ecc.c:934 |
7966 | #, c-format | 7837 | #, c-format |
7967 | msgid "ECDSA signature verification failed at %s:%d: %s\n" | 7838 | msgid "ECDSA signature verification failed at %s:%d: %s\n" |
7968 | msgstr "" | 7839 | msgstr "" |
7969 | 7840 | ||
7970 | #: src/util/crypto_ecc.c:958 | 7841 | #: src/util/crypto_ecc.c:991 |
7971 | #, c-format | 7842 | #, c-format |
7972 | msgid "EdDSA signature verification failed at %s:%d: %s\n" | 7843 | msgid "EdDSA signature verification failed at %s:%d: %s\n" |
7973 | msgstr "" | 7844 | msgstr "" |
@@ -8184,29 +8055,29 @@ msgstr "" | |||
8184 | msgid "Manipulate GNUnet configuration files" | 8055 | msgid "Manipulate GNUnet configuration files" |
8185 | msgstr "" | 8056 | msgstr "" |
8186 | 8057 | ||
8187 | #: src/util/gnunet-ecc.c:89 | 8058 | #: src/util/gnunet-ecc.c:94 |
8188 | #, c-format | 8059 | #, c-format |
8189 | msgid "Failed to open `%s': %s\n" | 8060 | msgid "Failed to open `%s': %s\n" |
8190 | msgstr "" | 8061 | msgstr "" |
8191 | 8062 | ||
8192 | #: src/util/gnunet-ecc.c:125 | 8063 | #: src/util/gnunet-ecc.c:130 |
8193 | #, c-format | 8064 | #, c-format |
8194 | msgid "Generating %u keys like %s, please wait" | 8065 | msgid "Generating %u keys like %s, please wait" |
8195 | msgstr "" | 8066 | msgstr "" |
8196 | 8067 | ||
8197 | #: src/util/gnunet-ecc.c:138 | 8068 | #: src/util/gnunet-ecc.c:143 |
8198 | #, c-format | 8069 | #, c-format |
8199 | msgid "Generating %u keys, please wait" | 8070 | msgid "Generating %u keys, please wait" |
8200 | msgstr "" | 8071 | msgstr "" |
8201 | 8072 | ||
8202 | #: src/util/gnunet-ecc.c:179 | 8073 | #: src/util/gnunet-ecc.c:184 |
8203 | #, c-format | 8074 | #, c-format |
8204 | msgid "" | 8075 | msgid "" |
8205 | "\n" | 8076 | "\n" |
8206 | "Failed to write to `%s': %s\n" | 8077 | "Failed to write to `%s': %s\n" |
8207 | msgstr "" | 8078 | msgstr "" |
8208 | 8079 | ||
8209 | #: src/util/gnunet-ecc.c:189 | 8080 | #: src/util/gnunet-ecc.c:194 |
8210 | #, c-format | 8081 | #, c-format |
8211 | msgid "" | 8082 | msgid "" |
8212 | "\n" | 8083 | "\n" |
@@ -8215,57 +8086,61 @@ msgstr "" | |||
8215 | "\n" | 8086 | "\n" |
8216 | "Terminé !\n" | 8087 | "Terminé !\n" |
8217 | 8088 | ||
8218 | #: src/util/gnunet-ecc.c:192 | 8089 | #: src/util/gnunet-ecc.c:197 |
8219 | #, c-format | 8090 | #, c-format |
8220 | msgid "" | 8091 | msgid "" |
8221 | "\n" | 8092 | "\n" |
8222 | "Error, %u keys not generated\n" | 8093 | "Error, %u keys not generated\n" |
8223 | msgstr "" | 8094 | msgstr "" |
8224 | 8095 | ||
8225 | #: src/util/gnunet-ecc.c:283 | 8096 | #: src/util/gnunet-ecc.c:288 |
8226 | #, c-format | 8097 | #, c-format |
8227 | msgid "Hostkeys file `%s' not found\n" | 8098 | msgid "Hostkeys file `%s' not found\n" |
8228 | msgstr "" | 8099 | msgstr "" |
8229 | 8100 | ||
8230 | #: src/util/gnunet-ecc.c:294 | 8101 | #: src/util/gnunet-ecc.c:299 |
8231 | #, c-format | 8102 | #, c-format |
8232 | msgid "Hostkeys file `%s' is empty\n" | 8103 | msgid "Hostkeys file `%s' is empty\n" |
8233 | msgstr "" | 8104 | msgstr "" |
8234 | 8105 | ||
8235 | #: src/util/gnunet-ecc.c:316 | 8106 | #: src/util/gnunet-ecc.c:321 |
8236 | #, c-format | 8107 | #, c-format |
8237 | msgid "Could not read hostkey file: %s\n" | 8108 | msgid "Could not read hostkey file: %s\n" |
8238 | msgstr "" | 8109 | msgstr "" |
8239 | 8110 | ||
8240 | #: src/util/gnunet-ecc.c:367 | 8111 | #: src/util/gnunet-ecc.c:372 |
8241 | msgid "No hostkey file specified on command line\n" | 8112 | msgid "No hostkey file specified on command line\n" |
8242 | msgstr "" | 8113 | msgstr "" |
8243 | 8114 | ||
8244 | #: src/util/gnunet-ecc.c:425 | 8115 | #: src/util/gnunet-ecc.c:437 |
8245 | msgid "list keys included in a file (for testing)" | 8116 | msgid "list keys included in a file (for testing)" |
8246 | msgstr "" | 8117 | msgstr "" |
8247 | 8118 | ||
8248 | #: src/util/gnunet-ecc.c:430 | 8119 | #: src/util/gnunet-ecc.c:442 |
8249 | msgid "number of keys to list included in a file (for testing)" | 8120 | msgid "number of keys to list included in a file (for testing)" |
8250 | msgstr "" | 8121 | msgstr "" |
8251 | 8122 | ||
8252 | #: src/util/gnunet-ecc.c:435 | 8123 | #: src/util/gnunet-ecc.c:447 |
8253 | msgid "create COUNT public-private key pairs (for testing)" | 8124 | msgid "create COUNT public-private key pairs (for testing)" |
8254 | msgstr "" | 8125 | msgstr "" |
8255 | 8126 | ||
8256 | #: src/util/gnunet-ecc.c:439 | 8127 | #: src/util/gnunet-ecc.c:451 |
8257 | msgid "print the public key in ASCII format" | 8128 | msgid "print the public key in ASCII format" |
8258 | msgstr "" | 8129 | msgstr "" |
8259 | 8130 | ||
8260 | #: src/util/gnunet-ecc.c:443 | 8131 | #: src/util/gnunet-ecc.c:455 |
8132 | msgid "print the private key in ASCII format" | ||
8133 | msgstr "" | ||
8134 | |||
8135 | #: src/util/gnunet-ecc.c:459 | ||
8261 | msgid "print the public key in HEX format" | 8136 | msgid "print the public key in HEX format" |
8262 | msgstr "" | 8137 | msgstr "" |
8263 | 8138 | ||
8264 | #: src/util/gnunet-ecc.c:447 | 8139 | #: src/util/gnunet-ecc.c:463 |
8265 | msgid "print examples of ECC operations (used for compatibility testing)" | 8140 | msgid "print examples of ECC operations (used for compatibility testing)" |
8266 | msgstr "" | 8141 | msgstr "" |
8267 | 8142 | ||
8268 | #: src/util/gnunet-ecc.c:463 | 8143 | #: src/util/gnunet-ecc.c:479 |
8269 | msgid "Manipulate GNUnet private ECC key files" | 8144 | msgid "Manipulate GNUnet private ECC key files" |
8270 | msgstr "" | 8145 | msgstr "" |
8271 | 8146 | ||
@@ -8422,22 +8297,22 @@ msgid "" | |||
8422 | "resolution will be unavailable.\n" | 8297 | "resolution will be unavailable.\n" |
8423 | msgstr "" | 8298 | msgstr "" |
8424 | 8299 | ||
8425 | #: src/util/resolver_api.c:826 | 8300 | #: src/util/resolver_api.c:827 |
8426 | #, c-format | 8301 | #, c-format |
8427 | msgid "Timeout trying to resolve hostname `%s'.\n" | 8302 | msgid "Timeout trying to resolve hostname `%s'.\n" |
8428 | msgstr "" | 8303 | msgstr "" |
8429 | 8304 | ||
8430 | #: src/util/resolver_api.c:839 | 8305 | #: src/util/resolver_api.c:840 |
8431 | #, c-format | 8306 | #, c-format |
8432 | msgid "Timeout trying to resolve IP address `%s'.\n" | 8307 | msgid "Timeout trying to resolve IP address `%s'.\n" |
8433 | msgstr "" | 8308 | msgstr "" |
8434 | 8309 | ||
8435 | #: src/util/resolver_api.c:1023 | 8310 | #: src/util/resolver_api.c:1024 |
8436 | msgid "Resolver not configured correctly.\n" | 8311 | msgid "Resolver not configured correctly.\n" |
8437 | msgstr "" | 8312 | msgstr "" |
8438 | 8313 | ||
8439 | #: src/util/resolver_api.c:1109 src/util/resolver_api.c:1132 | 8314 | #: src/util/resolver_api.c:1110 src/util/resolver_api.c:1133 |
8440 | #: src/util/resolver_api.c:1146 | 8315 | #: src/util/resolver_api.c:1147 |
8441 | #, fuzzy, c-format | 8316 | #, fuzzy, c-format |
8442 | msgid "Could not resolve our FQDN: %s\n" | 8317 | msgid "Could not resolve our FQDN: %s\n" |
8443 | msgstr "Résolution de « %s » échouée : %s\n" | 8318 | msgstr "Résolution de « %s » échouée : %s\n" |
@@ -8447,7 +8322,7 @@ msgid "" | |||
8447 | "Could not bind to any of the ports I was supposed to, refusing to run!\n" | 8322 | "Could not bind to any of the ports I was supposed to, refusing to run!\n" |
8448 | msgstr "" | 8323 | msgstr "" |
8449 | 8324 | ||
8450 | #: src/util/service.c:2081 | 8325 | #: src/util/service.c:2091 |
8451 | #, c-format | 8326 | #, c-format |
8452 | msgid "" | 8327 | msgid "" |
8453 | "Processing code for message of type %u did not call " | 8328 | "Processing code for message of type %u did not call " |
@@ -8624,61 +8499,61 @@ msgstr "" | |||
8624 | msgid "# ICMPv6 packets dropped (not allowed)" | 8499 | msgid "# ICMPv6 packets dropped (not allowed)" |
8625 | msgstr "" | 8500 | msgstr "" |
8626 | 8501 | ||
8627 | #: src/vpn/gnunet-service-vpn.c:2232 | 8502 | #: src/vpn/gnunet-service-vpn.c:2235 |
8628 | msgid "# Packets received from TUN interface" | 8503 | msgid "# Packets received from TUN interface" |
8629 | msgstr "" | 8504 | msgstr "" |
8630 | 8505 | ||
8631 | #: src/vpn/gnunet-service-vpn.c:2265 src/vpn/gnunet-service-vpn.c:2301 | 8506 | #: src/vpn/gnunet-service-vpn.c:2268 src/vpn/gnunet-service-vpn.c:2304 |
8632 | #, c-format | 8507 | #, c-format |
8633 | msgid "Packet received for unmapped destination `%s' (dropping it)\n" | 8508 | msgid "Packet received for unmapped destination `%s' (dropping it)\n" |
8634 | msgstr "" | 8509 | msgstr "" |
8635 | 8510 | ||
8636 | #: src/vpn/gnunet-service-vpn.c:2311 | 8511 | #: src/vpn/gnunet-service-vpn.c:2314 |
8637 | msgid "Received IPv4 packet with options (dropping it)\n" | 8512 | msgid "Received IPv4 packet with options (dropping it)\n" |
8638 | msgstr "" | 8513 | msgstr "" |
8639 | 8514 | ||
8640 | #: src/vpn/gnunet-service-vpn.c:2325 | 8515 | #: src/vpn/gnunet-service-vpn.c:2328 |
8641 | #, c-format | 8516 | #, c-format |
8642 | msgid "Received packet of unknown protocol %d from TUN (dropping it)\n" | 8517 | msgid "Received packet of unknown protocol %d from TUN (dropping it)\n" |
8643 | msgstr "" | 8518 | msgstr "" |
8644 | 8519 | ||
8645 | #: src/vpn/gnunet-service-vpn.c:2364 | 8520 | #: src/vpn/gnunet-service-vpn.c:2367 |
8646 | msgid "Failed to find unallocated IPv4 address in VPN's range\n" | 8521 | msgid "Failed to find unallocated IPv4 address in VPN's range\n" |
8647 | msgstr "" | 8522 | msgstr "" |
8648 | 8523 | ||
8649 | #: src/vpn/gnunet-service-vpn.c:2419 | 8524 | #: src/vpn/gnunet-service-vpn.c:2422 |
8650 | msgid "Failed to find unallocated IPv6 address in VPN's range\n" | 8525 | msgid "Failed to find unallocated IPv6 address in VPN's range\n" |
8651 | msgstr "" | 8526 | msgstr "" |
8652 | 8527 | ||
8653 | #: src/vpn/gnunet-service-vpn.c:2461 src/vpn/gnunet-service-vpn.c:2683 | 8528 | #: src/vpn/gnunet-service-vpn.c:2464 src/vpn/gnunet-service-vpn.c:2686 |
8654 | msgid "# Active destinations" | 8529 | msgid "# Active destinations" |
8655 | msgstr "" | 8530 | msgstr "" |
8656 | 8531 | ||
8657 | #: src/vpn/gnunet-service-vpn.c:2732 | 8532 | #: src/vpn/gnunet-service-vpn.c:2735 |
8658 | msgid "Failed to allocate IP address for new destination\n" | 8533 | msgid "Failed to allocate IP address for new destination\n" |
8659 | msgstr "" | 8534 | msgstr "" |
8660 | 8535 | ||
8661 | #: src/vpn/gnunet-service-vpn.c:2995 | 8536 | #: src/vpn/gnunet-service-vpn.c:2998 |
8662 | msgid "Must specify valid IPv6 address" | 8537 | msgid "Must specify valid IPv6 address" |
8663 | msgstr "" | 8538 | msgstr "" |
8664 | 8539 | ||
8665 | #: src/vpn/gnunet-service-vpn.c:3019 | 8540 | #: src/vpn/gnunet-service-vpn.c:3022 |
8666 | msgid "Must specify valid IPv6 mask" | 8541 | msgid "Must specify valid IPv6 mask" |
8667 | msgstr "" | 8542 | msgstr "" |
8668 | 8543 | ||
8669 | #: src/vpn/gnunet-service-vpn.c:3027 | 8544 | #: src/vpn/gnunet-service-vpn.c:3030 |
8670 | msgid "IPv6 support disabled as this system does not support IPv6\n" | 8545 | msgid "IPv6 support disabled as this system does not support IPv6\n" |
8671 | msgstr "" | 8546 | msgstr "" |
8672 | 8547 | ||
8673 | #: src/vpn/gnunet-service-vpn.c:3040 | 8548 | #: src/vpn/gnunet-service-vpn.c:3043 |
8674 | msgid "Must specify valid IPv4 address" | 8549 | msgid "Must specify valid IPv4 address" |
8675 | msgstr "" | 8550 | msgstr "" |
8676 | 8551 | ||
8677 | #: src/vpn/gnunet-service-vpn.c:3053 | 8552 | #: src/vpn/gnunet-service-vpn.c:3056 |
8678 | msgid "Must specify valid IPv4 mask" | 8553 | msgid "Must specify valid IPv4 mask" |
8679 | msgstr "" | 8554 | msgstr "" |
8680 | 8555 | ||
8681 | #: src/vpn/gnunet-service-vpn.c:3063 | 8556 | #: src/vpn/gnunet-service-vpn.c:3066 |
8682 | msgid "IPv4 support disabled as this system does not support IPv4\n" | 8557 | msgid "IPv4 support disabled as this system does not support IPv4\n" |
8683 | msgstr "" | 8558 | msgstr "" |
8684 | 8559 | ||
@@ -8848,6 +8723,10 @@ msgstr "" | |||
8848 | #~ msgid "Failed to start resolver!\n" | 8723 | #~ msgid "Failed to start resolver!\n" |
8849 | #~ msgstr "Échec du démarrage de %s\n" | 8724 | #~ msgstr "Échec du démarrage de %s\n" |
8850 | 8725 | ||
8726 | #, fuzzy | ||
8727 | #~ msgid "Failed to start NAT test for plugin `%s'\n" | ||
8728 | #~ msgstr "Résolution de « %s » échouée\n" | ||
8729 | |||
8851 | #~ msgid "Benchmarking done\n" | 8730 | #~ msgid "Benchmarking done\n" |
8852 | #~ msgstr "Benchmark terminé\n" | 8731 | #~ msgstr "Benchmark terminé\n" |
8853 | 8732 | ||
@@ -7,7 +7,7 @@ msgid "" | |||
7 | msgstr "" | 7 | msgstr "" |
8 | "Project-Id-Version: GNUnet 0.7.0b\n" | 8 | "Project-Id-Version: GNUnet 0.7.0b\n" |
9 | "Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n" | 9 | "Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n" |
10 | "POT-Creation-Date: 2017-10-20 15:14+0000\n" | 10 | "POT-Creation-Date: 2018-01-02 02:33+0100\n" |
11 | "PO-Revision-Date: 2006-01-21 17:16+0100\n" | 11 | "PO-Revision-Date: 2006-01-21 17:16+0100\n" |
12 | "Last-Translator: Daniel Nylander <po@danielnylander.se>\n" | 12 | "Last-Translator: Daniel Nylander <po@danielnylander.se>\n" |
13 | "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n" | 13 | "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n" |
@@ -245,14 +245,14 @@ msgid "Require valid port number for service `%s' in configuration!\n" | |||
245 | msgstr "" | 245 | msgstr "" |
246 | 246 | ||
247 | #: src/arm/gnunet-service-arm.c:430 src/transport/plugin_transport_tcp.c:1176 | 247 | #: src/arm/gnunet-service-arm.c:430 src/transport/plugin_transport_tcp.c:1176 |
248 | #: src/transport/tcp_service_legacy.c:613 src/util/client.c:480 | 248 | #: src/transport/tcp_service_legacy.c:613 src/util/client.c:505 |
249 | #: src/util/service.c:682 | 249 | #: src/util/service.c:682 |
250 | #, c-format | 250 | #, c-format |
251 | msgid "UNIXPATH `%s' too long, maximum length is %llu\n" | 251 | msgid "UNIXPATH `%s' too long, maximum length is %llu\n" |
252 | msgstr "" | 252 | msgstr "" |
253 | 253 | ||
254 | #: src/arm/gnunet-service-arm.c:434 src/transport/plugin_transport_tcp.c:1180 | 254 | #: src/arm/gnunet-service-arm.c:434 src/transport/plugin_transport_tcp.c:1180 |
255 | #: src/transport/tcp_service_legacy.c:617 src/util/client.c:485 | 255 | #: src/transport/tcp_service_legacy.c:617 src/util/client.c:510 |
256 | #: src/util/service.c:687 | 256 | #: src/util/service.c:687 |
257 | #, fuzzy, c-format | 257 | #, fuzzy, c-format |
258 | msgid "Using `%s' instead\n" | 258 | msgid "Using `%s' instead\n" |
@@ -355,15 +355,133 @@ msgstr "" | |||
355 | msgid "Initiating shutdown as requested by client.\n" | 355 | msgid "Initiating shutdown as requested by client.\n" |
356 | msgstr "" | 356 | msgstr "" |
357 | 357 | ||
358 | #: src/ats-tests/ats-testing-log.c:837 | 358 | #: src/ats/gnunet-ats-solver-eval.c:2781 src/ats/gnunet-ats-solver-eval.c:2822 |
359 | msgid "Stop logging\n" | 359 | #, c-format |
360 | msgid "" | ||
361 | "Could not load quota for network `%s': `%s', assigning default bandwidth " | ||
362 | "%llu\n" | ||
360 | msgstr "" | 363 | msgstr "" |
361 | 364 | ||
362 | #: src/ats-tests/ats-testing-log.c:892 | 365 | #: src/ats/gnunet-ats-solver-eval.c:2799 |
363 | #, fuzzy, c-format | 366 | #, c-format |
364 | msgid "Start logging `%s'\n" | 367 | msgid "" |
368 | "No outbound quota configured for network `%s', assigning default bandwidth " | ||
369 | "%llu\n" | ||
370 | msgstr "" | ||
371 | |||
372 | #: src/ats/gnunet-ats-solver-eval.c:2840 | ||
373 | #, c-format | ||
374 | msgid "" | ||
375 | "No outbound quota configure for network `%s', assigning default bandwidth " | ||
376 | "%llu\n" | ||
377 | msgstr "" | ||
378 | |||
379 | #: src/ats/gnunet-ats-solver-eval.c:3294 src/ats-tests/gnunet-solver-eval.c:939 | ||
380 | msgid "solver to use" | ||
381 | msgstr "" | ||
382 | |||
383 | #: src/ats/gnunet-ats-solver-eval.c:3299 src/ats-tests/gnunet-solver-eval.c:945 | ||
384 | #: src/ats-tests/gnunet-solver-eval.c:950 | ||
385 | msgid "experiment to use" | ||
386 | msgstr "" | ||
387 | |||
388 | #: src/ats/gnunet-ats-solver-eval.c:3306 | ||
389 | #, fuzzy | ||
390 | msgid "print logging" | ||
365 | msgstr "Startade samling \"%s\".\n" | 391 | msgstr "Startade samling \"%s\".\n" |
366 | 392 | ||
393 | #: src/ats/gnunet-ats-solver-eval.c:3311 | ||
394 | msgid "save logging to disk" | ||
395 | msgstr "" | ||
396 | |||
397 | #: src/ats/gnunet-ats-solver-eval.c:3316 | ||
398 | msgid "disable normalization" | ||
399 | msgstr "" | ||
400 | |||
401 | #: src/ats/gnunet-service-ats_plugins.c:304 | ||
402 | #, c-format | ||
403 | msgid "" | ||
404 | "Could not load %s quota for network `%s': `%s', assigning default bandwidth " | ||
405 | "%llu\n" | ||
406 | msgstr "" | ||
407 | |||
408 | #: src/ats/gnunet-service-ats_plugins.c:314 | ||
409 | #, c-format | ||
410 | msgid "%s quota configured for network `%s' is %llu\n" | ||
411 | msgstr "" | ||
412 | |||
413 | #: src/ats/gnunet-service-ats_plugins.c:359 | ||
414 | #, c-format | ||
415 | msgid "" | ||
416 | "No %s-quota configured for network `%s', assigning default bandwidth %llu\n" | ||
417 | msgstr "" | ||
418 | |||
419 | #: src/ats/gnunet-service-ats_plugins.c:451 | ||
420 | #, fuzzy, c-format | ||
421 | msgid "Failed to initialize solver `%s'!\n" | ||
422 | msgstr "Kunde inte initiera SQLite.\n" | ||
423 | |||
424 | #: src/ats/plugin_ats_mlp.c:1274 | ||
425 | msgid "Problem size too large, cannot allocate memory!\n" | ||
426 | msgstr "" | ||
427 | |||
428 | #: src/ats/plugin_ats_mlp.c:1869 | ||
429 | #, fuzzy, c-format | ||
430 | msgid "Adding address for peer `%s' multiple times\n" | ||
431 | msgstr "Motpart \"%s\" med pålitlighet %8u och adress \"%s\"\n" | ||
432 | |||
433 | #: src/ats/plugin_ats_mlp.c:1913 | ||
434 | #, fuzzy, c-format | ||
435 | msgid "Updating address property for peer `%s' %p not added before\n" | ||
436 | msgstr "Motpart \"%s\" med pålitlighet %8u och adress \"%s\"\n" | ||
437 | |||
438 | #: src/ats/plugin_ats_mlp.c:2475 | ||
439 | msgid "" | ||
440 | "MLP solver is not optimizing for anything, changing to feasibility check\n" | ||
441 | msgstr "" | ||
442 | |||
443 | #: src/ats/plugin_ats_mlp.c:2515 src/ats/plugin_ats_mlp.c:2532 | ||
444 | #: src/ats/plugin_ats_mlp.c:2564 src/ats/plugin_ats_mlp.c:2582 | ||
445 | #: src/ats/plugin_ats_mlp.c:2601 src/ats/plugin_ats_proportional.c:1141 | ||
446 | #: src/ats/plugin_ats_ril.c:2612 src/ats/plugin_ats_ril.c:2629 | ||
447 | #: src/ats/plugin_ats_ril.c:2646 src/ats/plugin_ats_ril.c:2663 | ||
448 | #: src/ats/plugin_ats_ril.c:2680 src/ats/plugin_ats_ril.c:2697 | ||
449 | #: src/ats/plugin_ats_ril.c:2714 src/ats/plugin_ats_ril.c:2731 | ||
450 | #, fuzzy, c-format | ||
451 | msgid "Invalid %s configuration %f \n" | ||
452 | msgstr "Kunde inte spara konfigurationsfil \"%s\":" | ||
453 | |||
454 | #: src/ats/plugin_ats_mlp.c:2670 | ||
455 | #, c-format | ||
456 | msgid "" | ||
457 | "Adjusting inconsistent outbound quota configuration for network `%s', is " | ||
458 | "%llu must be at least %llu\n" | ||
459 | msgstr "" | ||
460 | |||
461 | #: src/ats/plugin_ats_mlp.c:2679 | ||
462 | #, c-format | ||
463 | msgid "" | ||
464 | "Adjusting inconsistent inbound quota configuration for network `%s', is %llu " | ||
465 | "must be at least %llu\n" | ||
466 | msgstr "" | ||
467 | |||
468 | #: src/ats/plugin_ats_mlp.c:2689 | ||
469 | #, c-format | ||
470 | msgid "" | ||
471 | "Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n" | ||
472 | msgstr "" | ||
473 | |||
474 | #: src/ats/plugin_ats_mlp.c:2698 | ||
475 | #, c-format | ||
476 | msgid "" | ||
477 | "Adjusting inbound quota configuration for network `%s' from %llu to %.0f\n" | ||
478 | msgstr "" | ||
479 | |||
480 | #: src/ats/plugin_ats_proportional.c:1164 | ||
481 | #, fuzzy, c-format | ||
482 | msgid "Invalid %s configuration %f\n" | ||
483 | msgstr "Kunde inte spara konfigurationsfil \"%s\":" | ||
484 | |||
367 | #: src/ats-tests/ats-testing.c:422 | 485 | #: src/ats-tests/ats-testing.c:422 |
368 | #, c-format | 486 | #, c-format |
369 | msgid "Connected master [%u] with slave [%u]\n" | 487 | msgid "Connected master [%u] with slave [%u]\n" |
@@ -374,6 +492,15 @@ msgstr "" | |||
374 | msgid "Failed to connect master peer [%u] with slave [%u]\n" | 492 | msgid "Failed to connect master peer [%u] with slave [%u]\n" |
375 | msgstr "Misslyckades att ansluta till gnunetd.\n" | 493 | msgstr "Misslyckades att ansluta till gnunetd.\n" |
376 | 494 | ||
495 | #: src/ats-tests/ats-testing-log.c:837 | ||
496 | msgid "Stop logging\n" | ||
497 | msgstr "" | ||
498 | |||
499 | #: src/ats-tests/ats-testing-log.c:892 | ||
500 | #, fuzzy, c-format | ||
501 | msgid "Start logging `%s'\n" | ||
502 | msgstr "Startade samling \"%s\".\n" | ||
503 | |||
377 | #: src/ats-tests/gnunet-ats-sim.c:90 | 504 | #: src/ats-tests/gnunet-ats-sim.c:90 |
378 | #, c-format | 505 | #, c-format |
379 | msgid "" | 506 | msgid "" |
@@ -381,15 +508,6 @@ msgid "" | |||
381 | "= %u KiB/s\n" | 508 | "= %u KiB/s\n" |
382 | msgstr "" | 509 | msgstr "" |
383 | 510 | ||
384 | #: src/ats-tests/gnunet-solver-eval.c:939 src/ats/gnunet-ats-solver-eval.c:3294 | ||
385 | msgid "solver to use" | ||
386 | msgstr "" | ||
387 | |||
388 | #: src/ats-tests/gnunet-solver-eval.c:945 | ||
389 | #: src/ats-tests/gnunet-solver-eval.c:950 src/ats/gnunet-ats-solver-eval.c:3299 | ||
390 | msgid "experiment to use" | ||
391 | msgstr "" | ||
392 | |||
393 | #: src/ats-tool/gnunet-ats.c:307 | 511 | #: src/ats-tool/gnunet-ats.c:307 |
394 | #, c-format | 512 | #, c-format |
395 | msgid "%u address resolutions had a timeout\n" | 513 | msgid "%u address resolutions had a timeout\n" |
@@ -511,124 +629,6 @@ msgstr "" | |||
511 | msgid "Print information about ATS state" | 629 | msgid "Print information about ATS state" |
512 | msgstr "Skriv ut information om GNUnets motparter." | 630 | msgstr "Skriv ut information om GNUnets motparter." |
513 | 631 | ||
514 | #: src/ats/gnunet-ats-solver-eval.c:2781 src/ats/gnunet-ats-solver-eval.c:2822 | ||
515 | #, c-format | ||
516 | msgid "" | ||
517 | "Could not load quota for network `%s': `%s', assigning default bandwidth " | ||
518 | "%llu\n" | ||
519 | msgstr "" | ||
520 | |||
521 | #: src/ats/gnunet-ats-solver-eval.c:2799 | ||
522 | #, c-format | ||
523 | msgid "" | ||
524 | "No outbound quota configured for network `%s', assigning default bandwidth " | ||
525 | "%llu\n" | ||
526 | msgstr "" | ||
527 | |||
528 | #: src/ats/gnunet-ats-solver-eval.c:2840 | ||
529 | #, c-format | ||
530 | msgid "" | ||
531 | "No outbound quota configure for network `%s', assigning default bandwidth " | ||
532 | "%llu\n" | ||
533 | msgstr "" | ||
534 | |||
535 | #: src/ats/gnunet-ats-solver-eval.c:3306 | ||
536 | #, fuzzy | ||
537 | msgid "print logging" | ||
538 | msgstr "Startade samling \"%s\".\n" | ||
539 | |||
540 | #: src/ats/gnunet-ats-solver-eval.c:3311 | ||
541 | msgid "save logging to disk" | ||
542 | msgstr "" | ||
543 | |||
544 | #: src/ats/gnunet-ats-solver-eval.c:3316 | ||
545 | msgid "disable normalization" | ||
546 | msgstr "" | ||
547 | |||
548 | #: src/ats/gnunet-service-ats_plugins.c:304 | ||
549 | #, c-format | ||
550 | msgid "" | ||
551 | "Could not load %s quota for network `%s': `%s', assigning default bandwidth " | ||
552 | "%llu\n" | ||
553 | msgstr "" | ||
554 | |||
555 | #: src/ats/gnunet-service-ats_plugins.c:314 | ||
556 | #, c-format | ||
557 | msgid "%s quota configured for network `%s' is %llu\n" | ||
558 | msgstr "" | ||
559 | |||
560 | #: src/ats/gnunet-service-ats_plugins.c:359 | ||
561 | #, c-format | ||
562 | msgid "" | ||
563 | "No %s-quota configured for network `%s', assigning default bandwidth %llu\n" | ||
564 | msgstr "" | ||
565 | |||
566 | #: src/ats/gnunet-service-ats_plugins.c:451 | ||
567 | #, fuzzy, c-format | ||
568 | msgid "Failed to initialize solver `%s'!\n" | ||
569 | msgstr "Kunde inte initiera SQLite.\n" | ||
570 | |||
571 | #: src/ats/plugin_ats_mlp.c:1274 | ||
572 | msgid "Problem size too large, cannot allocate memory!\n" | ||
573 | msgstr "" | ||
574 | |||
575 | #: src/ats/plugin_ats_mlp.c:1869 | ||
576 | #, fuzzy, c-format | ||
577 | msgid "Adding address for peer `%s' multiple times\n" | ||
578 | msgstr "Motpart \"%s\" med pålitlighet %8u och adress \"%s\"\n" | ||
579 | |||
580 | #: src/ats/plugin_ats_mlp.c:1913 | ||
581 | #, fuzzy, c-format | ||
582 | msgid "Updating address property for peer `%s' %p not added before\n" | ||
583 | msgstr "Motpart \"%s\" med pålitlighet %8u och adress \"%s\"\n" | ||
584 | |||
585 | #: src/ats/plugin_ats_mlp.c:2475 | ||
586 | msgid "" | ||
587 | "MLP solver is not optimizing for anything, changing to feasibility check\n" | ||
588 | msgstr "" | ||
589 | |||
590 | #: src/ats/plugin_ats_mlp.c:2515 src/ats/plugin_ats_mlp.c:2532 | ||
591 | #: src/ats/plugin_ats_mlp.c:2564 src/ats/plugin_ats_mlp.c:2582 | ||
592 | #: src/ats/plugin_ats_mlp.c:2601 src/ats/plugin_ats_proportional.c:1141 | ||
593 | #: src/ats/plugin_ats_ril.c:2612 src/ats/plugin_ats_ril.c:2629 | ||
594 | #: src/ats/plugin_ats_ril.c:2646 src/ats/plugin_ats_ril.c:2663 | ||
595 | #: src/ats/plugin_ats_ril.c:2680 src/ats/plugin_ats_ril.c:2697 | ||
596 | #: src/ats/plugin_ats_ril.c:2714 src/ats/plugin_ats_ril.c:2731 | ||
597 | #, fuzzy, c-format | ||
598 | msgid "Invalid %s configuration %f \n" | ||
599 | msgstr "Kunde inte spara konfigurationsfil \"%s\":" | ||
600 | |||
601 | #: src/ats/plugin_ats_mlp.c:2670 | ||
602 | #, c-format | ||
603 | msgid "" | ||
604 | "Adjusting inconsistent outbound quota configuration for network `%s', is " | ||
605 | "%llu must be at least %llu\n" | ||
606 | msgstr "" | ||
607 | |||
608 | #: src/ats/plugin_ats_mlp.c:2679 | ||
609 | #, c-format | ||
610 | msgid "" | ||
611 | "Adjusting inconsistent inbound quota configuration for network `%s', is %llu " | ||
612 | "must be at least %llu\n" | ||
613 | msgstr "" | ||
614 | |||
615 | #: src/ats/plugin_ats_mlp.c:2689 | ||
616 | #, c-format | ||
617 | msgid "" | ||
618 | "Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n" | ||
619 | msgstr "" | ||
620 | |||
621 | #: src/ats/plugin_ats_mlp.c:2698 | ||
622 | #, c-format | ||
623 | msgid "" | ||
624 | "Adjusting inbound quota configuration for network `%s' from %llu to %.0f\n" | ||
625 | msgstr "" | ||
626 | |||
627 | #: src/ats/plugin_ats_proportional.c:1164 | ||
628 | #, fuzzy, c-format | ||
629 | msgid "Invalid %s configuration %f\n" | ||
630 | msgstr "Kunde inte spara konfigurationsfil \"%s\":" | ||
631 | |||
632 | #: src/auction/gnunet-auction-create.c:163 | 632 | #: src/auction/gnunet-auction-create.c:163 |
633 | msgid "description of the item to be sold" | 633 | msgid "description of the item to be sold" |
634 | msgstr "" | 634 | msgstr "" |
@@ -676,58 +676,58 @@ msgstr "hjälptext för -t" | |||
676 | msgid "Invalid peer ID `%s'\n" | 676 | msgid "Invalid peer ID `%s'\n" |
677 | msgstr "Ogiltiga argument: " | 677 | msgstr "Ogiltiga argument: " |
678 | 678 | ||
679 | #: src/cadet/gnunet-cadet.c:702 | 679 | #: src/cadet/gnunet-cadet.c:703 |
680 | #, fuzzy, c-format | 680 | #, fuzzy, c-format |
681 | msgid "Invalid tunnel owner `%s'\n" | 681 | msgid "Invalid tunnel owner `%s'\n" |
682 | msgstr "Ogiltigt format för IP: \"%s\"\n" | 682 | msgstr "Ogiltigt format för IP: \"%s\"\n" |
683 | 683 | ||
684 | #: src/cadet/gnunet-cadet.c:775 | 684 | #: src/cadet/gnunet-cadet.c:776 |
685 | msgid "Extra arguments are not applicable in combination with this option.\n" | 685 | msgid "Extra arguments are not applicable in combination with this option.\n" |
686 | msgstr "" | 686 | msgstr "" |
687 | 687 | ||
688 | #: src/cadet/gnunet-cadet.c:866 | 688 | #: src/cadet/gnunet-cadet.c:867 |
689 | #, fuzzy, c-format | 689 | #, fuzzy, c-format |
690 | msgid "Invalid target `%s'\n" | 690 | msgid "Invalid target `%s'\n" |
691 | msgstr "Ogiltigt argument: \"%s\"\n" | 691 | msgstr "Ogiltigt argument: \"%s\"\n" |
692 | 692 | ||
693 | #: src/cadet/gnunet-cadet.c:903 | 693 | #: src/cadet/gnunet-cadet.c:904 |
694 | #, fuzzy | 694 | #, fuzzy |
695 | msgid "No action requested\n" | 695 | msgid "No action requested\n" |
696 | msgstr "Samling stoppad.\n" | 696 | msgstr "Samling stoppad.\n" |
697 | 697 | ||
698 | #: src/cadet/gnunet-cadet.c:928 | 698 | #: src/cadet/gnunet-cadet.c:929 |
699 | #, fuzzy | 699 | #, fuzzy |
700 | msgid "Provide information about a particular connection" | 700 | msgid "Provide information about a particular connection" |
701 | msgstr "Skriv ut information om GNUnets motparter." | 701 | msgstr "Skriv ut information om GNUnets motparter." |
702 | 702 | ||
703 | #: src/cadet/gnunet-cadet.c:933 | 703 | #: src/cadet/gnunet-cadet.c:934 |
704 | msgid "Activate echo mode" | 704 | msgid "Activate echo mode" |
705 | msgstr "" | 705 | msgstr "" |
706 | 706 | ||
707 | #: src/cadet/gnunet-cadet.c:938 | 707 | #: src/cadet/gnunet-cadet.c:939 |
708 | msgid "Dump debug information to STDERR" | 708 | msgid "Dump debug information to STDERR" |
709 | msgstr "" | 709 | msgstr "" |
710 | 710 | ||
711 | #: src/cadet/gnunet-cadet.c:944 | 711 | #: src/cadet/gnunet-cadet.c:945 |
712 | msgid "Listen for connections using a shared secret among sender and recipient" | 712 | msgid "Listen for connections using a shared secret among sender and recipient" |
713 | msgstr "" | 713 | msgstr "" |
714 | 714 | ||
715 | #: src/cadet/gnunet-cadet.c:951 | 715 | #: src/cadet/gnunet-cadet.c:952 |
716 | #, fuzzy | 716 | #, fuzzy |
717 | msgid "Provide information about a patricular peer" | 717 | msgid "Provide information about a patricular peer" |
718 | msgstr "Skriv ut information om GNUnets motparter." | 718 | msgstr "Skriv ut information om GNUnets motparter." |
719 | 719 | ||
720 | #: src/cadet/gnunet-cadet.c:957 | 720 | #: src/cadet/gnunet-cadet.c:958 |
721 | #, fuzzy | 721 | #, fuzzy |
722 | msgid "Provide information about all peers" | 722 | msgid "Provide information about all peers" |
723 | msgstr "Skriv ut information om GNUnets motparter." | 723 | msgstr "Skriv ut information om GNUnets motparter." |
724 | 724 | ||
725 | #: src/cadet/gnunet-cadet.c:963 | 725 | #: src/cadet/gnunet-cadet.c:964 |
726 | #, fuzzy | 726 | #, fuzzy |
727 | msgid "Provide information about a particular tunnel" | 727 | msgid "Provide information about a particular tunnel" |
728 | msgstr "Skriv ut information om GNUnets motparter." | 728 | msgstr "Skriv ut information om GNUnets motparter." |
729 | 729 | ||
730 | #: src/cadet/gnunet-cadet.c:969 | 730 | #: src/cadet/gnunet-cadet.c:970 |
731 | #, fuzzy | 731 | #, fuzzy |
732 | msgid "Provide information about all tunnels" | 732 | msgid "Provide information about all tunnels" |
733 | msgstr "Skriv ut information om GNUnets motparter." | 733 | msgstr "Skriv ut information om GNUnets motparter." |
@@ -777,28 +777,6 @@ msgstr "" | |||
777 | msgid "Connection to conversation service lost, trying to reconnect\n" | 777 | msgid "Connection to conversation service lost, trying to reconnect\n" |
778 | msgstr "" | 778 | msgstr "" |
779 | 779 | ||
780 | #: src/conversation/gnunet-conversation-test.c:119 | ||
781 | #, c-format | ||
782 | msgid "" | ||
783 | "\n" | ||
784 | "End of transmission. Have a GNU day.\n" | ||
785 | msgstr "" | ||
786 | |||
787 | #: src/conversation/gnunet-conversation-test.c:145 | ||
788 | #, c-format | ||
789 | msgid "" | ||
790 | "\n" | ||
791 | "We are now playing your recording back. If you can hear it, your audio " | ||
792 | "settings are working..." | ||
793 | msgstr "" | ||
794 | |||
795 | #: src/conversation/gnunet-conversation-test.c:210 | ||
796 | #, c-format | ||
797 | msgid "" | ||
798 | "We will now be recording you for %s. After that time, the recording will be " | ||
799 | "played back to you..." | ||
800 | msgstr "" | ||
801 | |||
802 | #: src/conversation/gnunet-conversation.c:269 | 780 | #: src/conversation/gnunet-conversation.c:269 |
803 | #, c-format | 781 | #, c-format |
804 | msgid "Incoming call from `%s'. Please /accept %u or /cancel %u the call.\n" | 782 | msgid "Incoming call from `%s'. Please /accept %u or /cancel %u the call.\n" |
@@ -1056,8 +1034,30 @@ msgstr "" | |||
1056 | msgid "Enables having a conversation with other GNUnet users." | 1034 | msgid "Enables having a conversation with other GNUnet users." |
1057 | msgstr "" | 1035 | msgstr "" |
1058 | 1036 | ||
1059 | #: src/conversation/gnunet-helper-audio-playback-gst.c:356 | 1037 | #: src/conversation/gnunet-conversation-test.c:119 |
1038 | #, c-format | ||
1039 | msgid "" | ||
1040 | "\n" | ||
1041 | "End of transmission. Have a GNU day.\n" | ||
1042 | msgstr "" | ||
1043 | |||
1044 | #: src/conversation/gnunet-conversation-test.c:145 | ||
1045 | #, c-format | ||
1046 | msgid "" | ||
1047 | "\n" | ||
1048 | "We are now playing your recording back. If you can hear it, your audio " | ||
1049 | "settings are working..." | ||
1050 | msgstr "" | ||
1051 | |||
1052 | #: src/conversation/gnunet-conversation-test.c:210 | ||
1053 | #, c-format | ||
1054 | msgid "" | ||
1055 | "We will now be recording you for %s. After that time, the recording will be " | ||
1056 | "played back to you..." | ||
1057 | msgstr "" | ||
1058 | |||
1060 | #: src/conversation/gnunet_gst.c:622 | 1059 | #: src/conversation/gnunet_gst.c:622 |
1060 | #: src/conversation/gnunet-helper-audio-playback-gst.c:361 | ||
1061 | #, c-format | 1061 | #, c-format |
1062 | msgid "Read error from STDIN: %d %s\n" | 1062 | msgid "Read error from STDIN: %d %s\n" |
1063 | msgstr "" | 1063 | msgstr "" |
@@ -1067,63 +1067,63 @@ msgstr "" | |||
1067 | msgid "pa_stream_write() failed: %s\n" | 1067 | msgid "pa_stream_write() failed: %s\n" |
1068 | msgstr "\"%s\" %s misslyckades: %s\n" | 1068 | msgstr "\"%s\" %s misslyckades: %s\n" |
1069 | 1069 | ||
1070 | #: src/conversation/gnunet-helper-audio-playback.c:607 | 1070 | #: src/conversation/gnunet-helper-audio-playback.c:612 |
1071 | msgid "gnunet-helper-audio-playback - Got signal, exiting\n" | 1071 | msgid "gnunet-helper-audio-playback - Got signal, exiting\n" |
1072 | msgstr "" | 1072 | msgstr "" |
1073 | 1073 | ||
1074 | #: src/conversation/gnunet-helper-audio-playback.c:632 | 1074 | #: src/conversation/gnunet-helper-audio-playback.c:637 |
1075 | #: src/conversation/gnunet-helper-audio-record.c:545 | 1075 | #: src/conversation/gnunet-helper-audio-record.c:545 |
1076 | #, fuzzy | 1076 | #, fuzzy |
1077 | msgid "Connection established.\n" | 1077 | msgid "Connection established.\n" |
1078 | msgstr "Samling stoppad.\n" | 1078 | msgstr "Samling stoppad.\n" |
1079 | 1079 | ||
1080 | #: src/conversation/gnunet-helper-audio-playback.c:637 | 1080 | #: src/conversation/gnunet-helper-audio-playback.c:642 |
1081 | #: src/conversation/gnunet-helper-audio-record.c:550 | 1081 | #: src/conversation/gnunet-helper-audio-record.c:550 |
1082 | #, fuzzy, c-format | 1082 | #, fuzzy, c-format |
1083 | msgid "pa_stream_new() failed: %s\n" | 1083 | msgid "pa_stream_new() failed: %s\n" |
1084 | msgstr "\"%s\" %s misslyckades: %s\n" | 1084 | msgstr "\"%s\" %s misslyckades: %s\n" |
1085 | 1085 | ||
1086 | #: src/conversation/gnunet-helper-audio-playback.c:651 | 1086 | #: src/conversation/gnunet-helper-audio-playback.c:656 |
1087 | #, c-format | 1087 | #, c-format |
1088 | msgid "pa_stream_connect_playback() failed: %s\n" | 1088 | msgid "pa_stream_connect_playback() failed: %s\n" |
1089 | msgstr "" | 1089 | msgstr "" |
1090 | 1090 | ||
1091 | #: src/conversation/gnunet-helper-audio-playback.c:664 | 1091 | #: src/conversation/gnunet-helper-audio-playback.c:669 |
1092 | #: src/conversation/gnunet-helper-audio-record.c:576 | 1092 | #: src/conversation/gnunet-helper-audio-record.c:576 |
1093 | #, fuzzy, c-format | 1093 | #, fuzzy, c-format |
1094 | msgid "Connection failure: %s\n" | 1094 | msgid "Connection failure: %s\n" |
1095 | msgstr " Anslutning misslyckades (fel?)\n" | 1095 | msgstr " Anslutning misslyckades (fel?)\n" |
1096 | 1096 | ||
1097 | #: src/conversation/gnunet-helper-audio-playback.c:685 | 1097 | #: src/conversation/gnunet-helper-audio-playback.c:690 |
1098 | #: src/conversation/gnunet-helper-audio-record.c:599 | 1098 | #: src/conversation/gnunet-helper-audio-record.c:599 |
1099 | msgid "Wrong Spec\n" | 1099 | msgid "Wrong Spec\n" |
1100 | msgstr "" | 1100 | msgstr "" |
1101 | 1101 | ||
1102 | #: src/conversation/gnunet-helper-audio-playback.c:691 | 1102 | #: src/conversation/gnunet-helper-audio-playback.c:696 |
1103 | #: src/conversation/gnunet-helper-audio-record.c:605 | 1103 | #: src/conversation/gnunet-helper-audio-record.c:605 |
1104 | #, fuzzy | 1104 | #, fuzzy |
1105 | msgid "pa_mainloop_new() failed.\n" | 1105 | msgid "pa_mainloop_new() failed.\n" |
1106 | msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n" | 1106 | msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n" |
1107 | 1107 | ||
1108 | #: src/conversation/gnunet-helper-audio-playback.c:705 | 1108 | #: src/conversation/gnunet-helper-audio-playback.c:710 |
1109 | #: src/conversation/gnunet-helper-audio-record.c:620 | 1109 | #: src/conversation/gnunet-helper-audio-record.c:620 |
1110 | #, fuzzy | 1110 | #, fuzzy |
1111 | msgid "pa_context_new() failed.\n" | 1111 | msgid "pa_context_new() failed.\n" |
1112 | msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n" | 1112 | msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n" |
1113 | 1113 | ||
1114 | #: src/conversation/gnunet-helper-audio-playback.c:712 | 1114 | #: src/conversation/gnunet-helper-audio-playback.c:717 |
1115 | #: src/conversation/gnunet-helper-audio-record.c:626 | 1115 | #: src/conversation/gnunet-helper-audio-record.c:626 |
1116 | #, fuzzy, c-format | 1116 | #, fuzzy, c-format |
1117 | msgid "pa_context_connect() failed: %s\n" | 1117 | msgid "pa_context_connect() failed: %s\n" |
1118 | msgstr "# av anslutna parter" | 1118 | msgstr "# av anslutna parter" |
1119 | 1119 | ||
1120 | #: src/conversation/gnunet-helper-audio-playback.c:718 | 1120 | #: src/conversation/gnunet-helper-audio-playback.c:723 |
1121 | #: src/conversation/gnunet-helper-audio-record.c:632 | 1121 | #: src/conversation/gnunet-helper-audio-record.c:632 |
1122 | #, fuzzy | 1122 | #, fuzzy |
1123 | msgid "pa_mainloop_run() failed.\n" | 1123 | msgid "pa_mainloop_run() failed.\n" |
1124 | msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n" | 1124 | msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n" |
1125 | 1125 | ||
1126 | #: src/conversation/gnunet-helper-audio-playback.c:790 | 1126 | #: src/conversation/gnunet-helper-audio-playback.c:795 |
1127 | #, c-format | 1127 | #, c-format |
1128 | msgid "Read error from STDIN: %s\n" | 1128 | msgid "Read error from STDIN: %s\n" |
1129 | msgstr "" | 1129 | msgstr "" |
@@ -1194,7 +1194,7 @@ msgstr "Misslyckades att läsa kompislista från \"%s\"\n" | |||
1194 | msgid "Could not open line, port %s already in use!\n" | 1194 | msgid "Could not open line, port %s already in use!\n" |
1195 | msgstr "Kunde inte ansluta till gnunetd.\n" | 1195 | msgstr "Kunde inte ansluta till gnunetd.\n" |
1196 | 1196 | ||
1197 | #: src/conversation/microphone.c:119 | 1197 | #: src/conversation/microphone.c:121 |
1198 | #, fuzzy | 1198 | #, fuzzy |
1199 | msgid "Could not start record audio helper\n" | 1199 | msgid "Could not start record audio helper\n" |
1200 | msgstr "Kunde inte komma åt namnrymdsinformation.\n" | 1200 | msgstr "Kunde inte komma åt namnrymdsinformation.\n" |
@@ -1285,27 +1285,27 @@ msgstr "" | |||
1285 | msgid "# dequeuing CAR (duplicate request)" | 1285 | msgid "# dequeuing CAR (duplicate request)" |
1286 | msgstr "" | 1286 | msgstr "" |
1287 | 1287 | ||
1288 | #: src/core/gnunet-service-core.c:440 | 1288 | #: src/core/gnunet-service-core.c:443 |
1289 | #, fuzzy, c-format | 1289 | #, fuzzy, c-format |
1290 | msgid "# bytes of messages of type %u received" | 1290 | msgid "# bytes of messages of type %u received" |
1291 | msgstr "# krypterade PONG-meddelanden mottagna" | 1291 | msgstr "# krypterade PONG-meddelanden mottagna" |
1292 | 1292 | ||
1293 | #: src/core/gnunet-service-core.c:538 | 1293 | #: src/core/gnunet-service-core.c:541 |
1294 | #, fuzzy | 1294 | #, fuzzy |
1295 | msgid "# messages discarded (session disconnected)" | 1295 | msgid "# messages discarded (session disconnected)" |
1296 | msgstr "Nätverksannonsering avstängd i konfigurationen!\n" | 1296 | msgstr "Nätverksannonsering avstängd i konfigurationen!\n" |
1297 | 1297 | ||
1298 | #: src/core/gnunet-service-core.c:876 | 1298 | #: src/core/gnunet-service-core.c:879 |
1299 | #, fuzzy, c-format | 1299 | #, fuzzy, c-format |
1300 | msgid "# messages of type %u discarded (client busy)" | 1300 | msgid "# messages of type %u discarded (client busy)" |
1301 | msgstr "# krypterade PONG-meddelanden mottagna" | 1301 | msgstr "# krypterade PONG-meddelanden mottagna" |
1302 | 1302 | ||
1303 | #: src/core/gnunet-service-core.c:985 | 1303 | #: src/core/gnunet-service-core.c:988 |
1304 | #, fuzzy | 1304 | #, fuzzy |
1305 | msgid "Core service is lacking HOSTKEY configuration setting. Exiting.\n" | 1305 | msgid "Core service is lacking HOSTKEY configuration setting. Exiting.\n" |
1306 | msgstr "GNUnet-konfiguration" | 1306 | msgstr "GNUnet-konfiguration" |
1307 | 1307 | ||
1308 | #: src/core/gnunet-service-core.c:1006 | 1308 | #: src/core/gnunet-service-core.c:1009 |
1309 | #, fuzzy, c-format | 1309 | #, fuzzy, c-format |
1310 | msgid "Core service of `%s' ready.\n" | 1310 | msgid "Core service of `%s' ready.\n" |
1311 | msgstr "\"%s\" är inte en fil.\n" | 1311 | msgstr "\"%s\" är inte en fil.\n" |
@@ -1318,146 +1318,146 @@ msgstr "# byte krypterade" | |||
1318 | msgid "# bytes decrypted" | 1318 | msgid "# bytes decrypted" |
1319 | msgstr "# byte dekrypterade" | 1319 | msgstr "# byte dekrypterade" |
1320 | 1320 | ||
1321 | #: src/core/gnunet-service-core_kx.c:725 | 1321 | #: src/core/gnunet-service-core_kx.c:728 |
1322 | #, fuzzy | 1322 | #, fuzzy |
1323 | msgid "# PAYLOAD dropped (out of order)" | 1323 | msgid "# PAYLOAD dropped (out of order)" |
1324 | msgstr "# byte kastade via UDP (utgående)" | 1324 | msgstr "# byte kastade via UDP (utgående)" |
1325 | 1325 | ||
1326 | #: src/core/gnunet-service-core_kx.c:775 | 1326 | #: src/core/gnunet-service-core_kx.c:778 |
1327 | msgid "# key exchanges initiated" | 1327 | msgid "# key exchanges initiated" |
1328 | msgstr "" | 1328 | msgstr "" |
1329 | 1329 | ||
1330 | #: src/core/gnunet-service-core_kx.c:837 | 1330 | #: src/core/gnunet-service-core_kx.c:840 |
1331 | msgid "# key exchanges stopped" | 1331 | msgid "# key exchanges stopped" |
1332 | msgstr "" | 1332 | msgstr "" |
1333 | 1333 | ||
1334 | #: src/core/gnunet-service-core_kx.c:871 | 1334 | #: src/core/gnunet-service-core_kx.c:874 |
1335 | #, fuzzy | 1335 | #, fuzzy |
1336 | msgid "# PING messages transmitted" | 1336 | msgid "# PING messages transmitted" |
1337 | msgstr "# PING-meddelanden skapade" | 1337 | msgstr "# PING-meddelanden skapade" |
1338 | 1338 | ||
1339 | #: src/core/gnunet-service-core_kx.c:938 | 1339 | #: src/core/gnunet-service-core_kx.c:941 |
1340 | msgid "# old ephemeral keys ignored" | 1340 | msgid "# old ephemeral keys ignored" |
1341 | msgstr "" | 1341 | msgstr "" |
1342 | 1342 | ||
1343 | #: src/core/gnunet-service-core_kx.c:945 | 1343 | #: src/core/gnunet-service-core_kx.c:948 |
1344 | #, fuzzy | 1344 | #, fuzzy |
1345 | msgid "# ephemeral keys received" | 1345 | msgid "# ephemeral keys received" |
1346 | msgstr "# krypterade PONG-meddelanden mottagna" | 1346 | msgstr "# krypterade PONG-meddelanden mottagna" |
1347 | 1347 | ||
1348 | #: src/core/gnunet-service-core_kx.c:984 | 1348 | #: src/core/gnunet-service-core_kx.c:987 |
1349 | #, c-format | 1349 | #, c-format |
1350 | msgid "" | 1350 | msgid "" |
1351 | "Ephemeral key message from peer `%s' rejected as its validity range does not " | 1351 | "Ephemeral key message from peer `%s' rejected as its validity range does not " |
1352 | "match our system time (%llu not in [%llu,%llu]).\n" | 1352 | "match our system time (%llu not in [%llu,%llu]).\n" |
1353 | msgstr "" | 1353 | msgstr "" |
1354 | 1354 | ||
1355 | #: src/core/gnunet-service-core_kx.c:995 | 1355 | #: src/core/gnunet-service-core_kx.c:998 |
1356 | #, fuzzy | 1356 | #, fuzzy |
1357 | msgid "# EPHEMERAL_KEY messages received" | 1357 | msgid "# EPHEMERAL_KEY messages received" |
1358 | msgstr "# PING-meddelanden skapade" | 1358 | msgstr "# PING-meddelanden skapade" |
1359 | 1359 | ||
1360 | #: src/core/gnunet-service-core_kx.c:1091 | 1360 | #: src/core/gnunet-service-core_kx.c:1094 |
1361 | #: src/transport/gnunet-service-transport_validation.c:1119 | 1361 | #: src/transport/gnunet-service-transport_validation.c:1128 |
1362 | #, fuzzy | 1362 | #, fuzzy |
1363 | msgid "# PING messages received" | 1363 | msgid "# PING messages received" |
1364 | msgstr "# PING-meddelanden skapade" | 1364 | msgstr "# PING-meddelanden skapade" |
1365 | 1365 | ||
1366 | #: src/core/gnunet-service-core_kx.c:1100 | 1366 | #: src/core/gnunet-service-core_kx.c:1103 |
1367 | #, fuzzy | 1367 | #, fuzzy |
1368 | msgid "# PING messages dropped (out of order)" | 1368 | msgid "# PING messages dropped (out of order)" |
1369 | msgstr "Nätverksannonsering avstängd i konfigurationen!\n" | 1369 | msgstr "Nätverksannonsering avstängd i konfigurationen!\n" |
1370 | 1370 | ||
1371 | #: src/core/gnunet-service-core_kx.c:1158 | 1371 | #: src/core/gnunet-service-core_kx.c:1161 |
1372 | #, fuzzy | 1372 | #, fuzzy |
1373 | msgid "# PONG messages created" | 1373 | msgid "# PONG messages created" |
1374 | msgstr "# PING-meddelanden skapade" | 1374 | msgstr "# PING-meddelanden skapade" |
1375 | 1375 | ||
1376 | #: src/core/gnunet-service-core_kx.c:1184 | 1376 | #: src/core/gnunet-service-core_kx.c:1187 |
1377 | #, fuzzy | 1377 | #, fuzzy |
1378 | msgid "# sessions terminated by timeout" | 1378 | msgid "# sessions terminated by timeout" |
1379 | msgstr "# byte kastade via TCP (utgående)" | 1379 | msgstr "# byte kastade via TCP (utgående)" |
1380 | 1380 | ||
1381 | #: src/core/gnunet-service-core_kx.c:1197 | 1381 | #: src/core/gnunet-service-core_kx.c:1200 |
1382 | #, fuzzy | 1382 | #, fuzzy |
1383 | msgid "# keepalive messages sent" | 1383 | msgid "# keepalive messages sent" |
1384 | msgstr "# PING-meddelanden i klartext skickade" | 1384 | msgstr "# PING-meddelanden i klartext skickade" |
1385 | 1385 | ||
1386 | #: src/core/gnunet-service-core_kx.c:1261 | 1386 | #: src/core/gnunet-service-core_kx.c:1264 |
1387 | #: src/transport/gnunet-service-transport_validation.c:1442 | 1387 | #: src/transport/gnunet-service-transport_validation.c:1461 |
1388 | #, fuzzy | 1388 | #, fuzzy |
1389 | msgid "# PONG messages received" | 1389 | msgid "# PONG messages received" |
1390 | msgstr "# krypterade PONG-meddelanden mottagna" | 1390 | msgstr "# krypterade PONG-meddelanden mottagna" |
1391 | 1391 | ||
1392 | #: src/core/gnunet-service-core_kx.c:1268 | 1392 | #: src/core/gnunet-service-core_kx.c:1271 |
1393 | #, fuzzy | 1393 | #, fuzzy |
1394 | msgid "# PONG messages dropped (connection down)" | 1394 | msgid "# PONG messages dropped (connection down)" |
1395 | msgstr "# krypterade PONG-meddelanden mottagna" | 1395 | msgstr "# krypterade PONG-meddelanden mottagna" |
1396 | 1396 | ||
1397 | #: src/core/gnunet-service-core_kx.c:1273 | 1397 | #: src/core/gnunet-service-core_kx.c:1276 |
1398 | #, fuzzy | 1398 | #, fuzzy |
1399 | msgid "# PONG messages dropped (out of order)" | 1399 | msgid "# PONG messages dropped (out of order)" |
1400 | msgstr "Nätverksannonsering avstängd i konfigurationen!\n" | 1400 | msgstr "Nätverksannonsering avstängd i konfigurationen!\n" |
1401 | 1401 | ||
1402 | #: src/core/gnunet-service-core_kx.c:1308 | 1402 | #: src/core/gnunet-service-core_kx.c:1311 |
1403 | #, fuzzy | 1403 | #, fuzzy |
1404 | msgid "# PONG messages decrypted" | 1404 | msgid "# PONG messages decrypted" |
1405 | msgstr "# PING-meddelanden skapade" | 1405 | msgstr "# PING-meddelanden skapade" |
1406 | 1406 | ||
1407 | #: src/core/gnunet-service-core_kx.c:1346 | 1407 | #: src/core/gnunet-service-core_kx.c:1349 |
1408 | #, fuzzy | 1408 | #, fuzzy |
1409 | msgid "# session keys confirmed via PONG" | 1409 | msgid "# session keys confirmed via PONG" |
1410 | msgstr "# sessionnycklar vägrade" | 1410 | msgstr "# sessionnycklar vägrade" |
1411 | 1411 | ||
1412 | #: src/core/gnunet-service-core_kx.c:1357 | 1412 | #: src/core/gnunet-service-core_kx.c:1360 |
1413 | #, fuzzy | 1413 | #, fuzzy |
1414 | msgid "# timeouts prevented via PONG" | 1414 | msgid "# timeouts prevented via PONG" |
1415 | msgstr "# byte mottogs via TCP" | 1415 | msgstr "# byte mottogs via TCP" |
1416 | 1416 | ||
1417 | #: src/core/gnunet-service-core_kx.c:1364 | 1417 | #: src/core/gnunet-service-core_kx.c:1367 |
1418 | #, fuzzy | 1418 | #, fuzzy |
1419 | msgid "# rekey operations confirmed via PONG" | 1419 | msgid "# rekey operations confirmed via PONG" |
1420 | msgstr "# sessionnycklar vägrade" | 1420 | msgstr "# sessionnycklar vägrade" |
1421 | 1421 | ||
1422 | #: src/core/gnunet-service-core_kx.c:1518 | 1422 | #: src/core/gnunet-service-core_kx.c:1521 |
1423 | #, fuzzy | 1423 | #, fuzzy |
1424 | msgid "# DATA message dropped (out of order)" | 1424 | msgid "# DATA message dropped (out of order)" |
1425 | msgstr "# byte kastade via UDP (utgående)" | 1425 | msgstr "# byte kastade via UDP (utgående)" |
1426 | 1426 | ||
1427 | #: src/core/gnunet-service-core_kx.c:1526 | 1427 | #: src/core/gnunet-service-core_kx.c:1529 |
1428 | #, c-format | 1428 | #, c-format |
1429 | msgid "" | 1429 | msgid "" |
1430 | "Session to peer `%s' went down due to key expiration (should not happen)\n" | 1430 | "Session to peer `%s' went down due to key expiration (should not happen)\n" |
1431 | msgstr "" | 1431 | msgstr "" |
1432 | 1432 | ||
1433 | #: src/core/gnunet-service-core_kx.c:1529 | 1433 | #: src/core/gnunet-service-core_kx.c:1532 |
1434 | #, fuzzy | 1434 | #, fuzzy |
1435 | msgid "# sessions terminated by key expiration" | 1435 | msgid "# sessions terminated by key expiration" |
1436 | msgstr "# byte kastade via TCP (utgående)" | 1436 | msgstr "# byte kastade via TCP (utgående)" |
1437 | 1437 | ||
1438 | #: src/core/gnunet-service-core_kx.c:1590 | 1438 | #: src/core/gnunet-service-core_kx.c:1593 |
1439 | #: src/core/gnunet-service-core_kx.c:1616 | 1439 | #: src/core/gnunet-service-core_kx.c:1619 |
1440 | #, fuzzy | 1440 | #, fuzzy |
1441 | msgid "# bytes dropped (duplicates)" | 1441 | msgid "# bytes dropped (duplicates)" |
1442 | msgstr "# byte kastade via UDP (utgående)" | 1442 | msgstr "# byte kastade via UDP (utgående)" |
1443 | 1443 | ||
1444 | #: src/core/gnunet-service-core_kx.c:1603 | 1444 | #: src/core/gnunet-service-core_kx.c:1606 |
1445 | #, fuzzy | 1445 | #, fuzzy |
1446 | msgid "# bytes dropped (out of sequence)" | 1446 | msgid "# bytes dropped (out of sequence)" |
1447 | msgstr "# byte kastade via UDP (utgående)" | 1447 | msgstr "# byte kastade via UDP (utgående)" |
1448 | 1448 | ||
1449 | #: src/core/gnunet-service-core_kx.c:1645 | 1449 | #: src/core/gnunet-service-core_kx.c:1648 |
1450 | #, fuzzy | 1450 | #, fuzzy |
1451 | msgid "# bytes dropped (ancient message)" | 1451 | msgid "# bytes dropped (ancient message)" |
1452 | msgstr "# byte kastade via UDP (utgående)" | 1452 | msgstr "# byte kastade via UDP (utgående)" |
1453 | 1453 | ||
1454 | #: src/core/gnunet-service-core_kx.c:1653 | 1454 | #: src/core/gnunet-service-core_kx.c:1656 |
1455 | #, fuzzy | 1455 | #, fuzzy |
1456 | msgid "# bytes of payload decrypted" | 1456 | msgid "# bytes of payload decrypted" |
1457 | msgstr "# byte dekrypterade" | 1457 | msgstr "# byte dekrypterade" |
1458 | 1458 | ||
1459 | #: src/core/gnunet-service-core_sessions.c:266 | 1459 | #: src/core/gnunet-service-core_sessions.c:260 |
1460 | #: src/core/gnunet-service-core_sessions.c:356 | 1460 | #: src/core/gnunet-service-core_sessions.c:350 |
1461 | #: src/dht/gnunet-service-dht_neighbours.c:733 | 1461 | #: src/dht/gnunet-service-dht_neighbours.c:733 |
1462 | #: src/dht/gnunet-service-dht_neighbours.c:795 | 1462 | #: src/dht/gnunet-service-dht_neighbours.c:795 |
1463 | #: src/fs/gnunet-service-fs_cp.c:615 src/fs/gnunet-service-fs_cp.c:1520 | 1463 | #: src/fs/gnunet-service-fs_cp.c:615 src/fs/gnunet-service-fs_cp.c:1520 |
@@ -1469,16 +1469,16 @@ msgstr "# byte dekrypterade" | |||
1469 | msgid "# peers connected" | 1469 | msgid "# peers connected" |
1470 | msgstr "# av anslutna parter" | 1470 | msgstr "# av anslutna parter" |
1471 | 1471 | ||
1472 | #: src/core/gnunet-service-core_sessions.c:302 | 1472 | #: src/core/gnunet-service-core_sessions.c:296 |
1473 | msgid "# type map refreshes sent" | 1473 | msgid "# type map refreshes sent" |
1474 | msgstr "" | 1474 | msgstr "" |
1475 | 1475 | ||
1476 | #: src/core/gnunet-service-core_sessions.c:422 | 1476 | #: src/core/gnunet-service-core_sessions.c:416 |
1477 | #, fuzzy | 1477 | #, fuzzy |
1478 | msgid "# outdated typemap confirmations received" | 1478 | msgid "# outdated typemap confirmations received" |
1479 | msgstr "Kunde inte spara konfiguration!" | 1479 | msgstr "Kunde inte spara konfiguration!" |
1480 | 1480 | ||
1481 | #: src/core/gnunet-service-core_sessions.c:439 | 1481 | #: src/core/gnunet-service-core_sessions.c:433 |
1482 | #, fuzzy | 1482 | #, fuzzy |
1483 | msgid "# valid typemap confirmations received" | 1483 | msgid "# valid typemap confirmations received" |
1484 | msgstr "Kunde inte spara konfiguration!" | 1484 | msgstr "Kunde inte spara konfiguration!" |
@@ -1493,138 +1493,6 @@ msgstr "# krypterade PONG-meddelanden mottagna" | |||
1493 | msgid "# updates to my type map" | 1493 | msgid "# updates to my type map" |
1494 | msgstr "" | 1494 | msgstr "" |
1495 | 1495 | ||
1496 | #: src/credential/credential_misc.c:88 | ||
1497 | #, fuzzy, c-format | ||
1498 | msgid "Unable to parse CRED record string `%s'\n" | ||
1499 | msgstr "Misslyckades att läsa kompislista från \"%s\"\n" | ||
1500 | |||
1501 | #: src/credential/gnunet-credential.c:278 src/namestore/gnunet-namestore.c:776 | ||
1502 | #: src/namestore/plugin_rest_namestore.c:1009 | ||
1503 | #, fuzzy, c-format | ||
1504 | msgid "Ego `%s' not known to identity service\n" | ||
1505 | msgstr "\"%s\": okänd tjänst: %s\n" | ||
1506 | |||
1507 | #: src/credential/gnunet-credential.c:294 | ||
1508 | #: src/credential/gnunet-credential.c:446 | ||
1509 | #, fuzzy, c-format | ||
1510 | msgid "Issuer public key `%s' is not well-formed\n" | ||
1511 | msgstr "Ogiltigt argument: \"%s\"\n" | ||
1512 | |||
1513 | #: src/credential/gnunet-credential.c:375 | ||
1514 | #: src/credential/gnunet-credential.c:435 | ||
1515 | #, fuzzy, c-format | ||
1516 | msgid "Issuer public key not well-formed\n" | ||
1517 | msgstr "Ogiltigt argument: \"%s\"\n" | ||
1518 | |||
1519 | #: src/credential/gnunet-credential.c:386 | ||
1520 | #: src/credential/gnunet-credential.c:455 | ||
1521 | #, fuzzy, c-format | ||
1522 | msgid "Failed to connect to CREDENTIAL\n" | ||
1523 | msgstr "Misslyckades att ansluta till gnunetd.\n" | ||
1524 | |||
1525 | #: src/credential/gnunet-credential.c:392 | ||
1526 | #, c-format | ||
1527 | msgid "You must provide issuer the attribute\n" | ||
1528 | msgstr "" | ||
1529 | |||
1530 | #: src/credential/gnunet-credential.c:399 | ||
1531 | #, c-format | ||
1532 | msgid "ego required\n" | ||
1533 | msgstr "" | ||
1534 | |||
1535 | #: src/credential/gnunet-credential.c:415 | ||
1536 | #, c-format | ||
1537 | msgid "Subject public key needed\n" | ||
1538 | msgstr "" | ||
1539 | |||
1540 | #: src/credential/gnunet-credential.c:426 | ||
1541 | #, fuzzy, c-format | ||
1542 | msgid "Subject public key `%s' is not well-formed\n" | ||
1543 | msgstr "Ogiltigt argument: \"%s\"\n" | ||
1544 | |||
1545 | #: src/credential/gnunet-credential.c:461 | ||
1546 | #, c-format | ||
1547 | msgid "You must provide issuer and subject attributes\n" | ||
1548 | msgstr "" | ||
1549 | |||
1550 | #: src/credential/gnunet-credential.c:511 | ||
1551 | #, c-format | ||
1552 | msgid "Issuer ego required\n" | ||
1553 | msgstr "" | ||
1554 | |||
1555 | #: src/credential/gnunet-credential.c:523 | ||
1556 | #, c-format | ||
1557 | msgid "Please specify name to lookup, subject key and issuer key!\n" | ||
1558 | msgstr "" | ||
1559 | |||
1560 | #: src/credential/gnunet-credential.c:543 | ||
1561 | msgid "create credential" | ||
1562 | msgstr "" | ||
1563 | |||
1564 | #: src/credential/gnunet-credential.c:547 | ||
1565 | msgid "verify credential against attribute" | ||
1566 | msgstr "" | ||
1567 | |||
1568 | #: src/credential/gnunet-credential.c:552 | ||
1569 | #, fuzzy | ||
1570 | msgid "The public key of the subject to lookup the credential for" | ||
1571 | msgstr "ange prioritet för innehållet" | ||
1572 | |||
1573 | #: src/credential/gnunet-credential.c:557 | ||
1574 | msgid "The name of the credential presented by the subject" | ||
1575 | msgstr "" | ||
1576 | |||
1577 | #: src/credential/gnunet-credential.c:562 | ||
1578 | #, fuzzy | ||
1579 | msgid "The public key of the authority to verify the credential against" | ||
1580 | msgstr "ange prioritet för innehållet" | ||
1581 | |||
1582 | #: src/credential/gnunet-credential.c:567 | ||
1583 | #, fuzzy | ||
1584 | msgid "The ego to use" | ||
1585 | msgstr "meddelandestorlek" | ||
1586 | |||
1587 | #: src/credential/gnunet-credential.c:572 | ||
1588 | msgid "The issuer attribute to verify against or to issue" | ||
1589 | msgstr "" | ||
1590 | |||
1591 | #: src/credential/gnunet-credential.c:577 | ||
1592 | msgid "The time to live for the credential" | ||
1593 | msgstr "" | ||
1594 | |||
1595 | #: src/credential/gnunet-credential.c:581 | ||
1596 | msgid "collect credentials" | ||
1597 | msgstr "" | ||
1598 | |||
1599 | #: src/credential/gnunet-credential.c:595 | ||
1600 | #, fuzzy | ||
1601 | msgid "GNUnet credential resolver tool" | ||
1602 | msgstr "Spåra GNUnets nätverkstopologi." | ||
1603 | |||
1604 | #: src/credential/gnunet-service-credential.c:1204 | ||
1605 | #: src/gns/gnunet-gns-helper-service-w32.c:727 src/gns/gnunet-gns.c:355 | ||
1606 | #, fuzzy, c-format | ||
1607 | msgid "Failed to connect to GNS\n" | ||
1608 | msgstr "Misslyckades att ansluta till gnunetd.\n" | ||
1609 | |||
1610 | #: src/credential/gnunet-service-credential.c:1210 | ||
1611 | #: src/namestore/gnunet-namestore-fcfsd.c:1034 | ||
1612 | #: src/namestore/gnunet-namestore.c:802 | ||
1613 | #: src/namestore/plugin_rest_namestore.c:1022 | ||
1614 | #, fuzzy, c-format | ||
1615 | msgid "Failed to connect to namestore\n" | ||
1616 | msgstr "Misslyckades att ansluta till gnunetd.\n" | ||
1617 | |||
1618 | #: src/credential/plugin_gnsrecord_credential.c:186 | ||
1619 | #, fuzzy, c-format | ||
1620 | msgid "Unable to parse ATTR record string `%s'\n" | ||
1621 | msgstr "Misslyckades att läsa kompislista från \"%s\"\n" | ||
1622 | |||
1623 | #: src/credential/plugin_rest_credential.c:1155 src/gns/plugin_rest_gns.c:668 | ||
1624 | #, fuzzy | ||
1625 | msgid "GNS REST API initialized\n" | ||
1626 | msgstr " Anslutning misslyckades\n" | ||
1627 | |||
1628 | #: src/datacache/datacache.c:119 src/datacache/datacache.c:294 | 1496 | #: src/datacache/datacache.c:119 src/datacache/datacache.c:294 |
1629 | #: src/datastore/gnunet-service-datastore.c:757 | 1497 | #: src/datastore/gnunet-service-datastore.c:757 |
1630 | #, fuzzy | 1498 | #, fuzzy |
@@ -1673,9 +1541,8 @@ msgstr "" | |||
1673 | #: src/datacache/plugin_datacache_sqlite.c:122 | 1541 | #: src/datacache/plugin_datacache_sqlite.c:122 |
1674 | #: src/datastore/plugin_datastore_mysql.c:892 | 1542 | #: src/datastore/plugin_datastore_mysql.c:892 |
1675 | #: src/datastore/plugin_datastore_sqlite.c:58 | 1543 | #: src/datastore/plugin_datastore_sqlite.c:58 |
1676 | #: src/datastore/plugin_datastore_sqlite.c:66 | 1544 | #: src/datastore/plugin_datastore_sqlite.c:66 src/my/my.c:80 src/my/my.c:92 |
1677 | #: src/identity-provider/plugin_identity_provider_sqlite.c:52 src/my/my.c:80 | 1545 | #: src/mysql/mysql.c:42 src/mysql/mysql.c:49 |
1678 | #: src/my/my.c:92 src/mysql/mysql.c:42 src/mysql/mysql.c:49 | ||
1679 | #: src/namecache/plugin_namecache_sqlite.c:53 | 1546 | #: src/namecache/plugin_namecache_sqlite.c:53 |
1680 | #: src/namestore/plugin_namestore_sqlite.c:53 | 1547 | #: src/namestore/plugin_namestore_sqlite.c:53 |
1681 | #: src/peerstore/plugin_peerstore_sqlite.c:52 | 1548 | #: src/peerstore/plugin_peerstore_sqlite.c:52 |
@@ -1693,7 +1560,6 @@ msgstr "\"%s\" misslyckades vid %s:%d med fel: %s\n" | |||
1693 | 1560 | ||
1694 | #: src/datacache/plugin_datacache_sqlite.c:817 | 1561 | #: src/datacache/plugin_datacache_sqlite.c:817 |
1695 | #: src/datastore/plugin_datastore_sqlite.c:456 | 1562 | #: src/datastore/plugin_datastore_sqlite.c:456 |
1696 | #: src/identity-provider/plugin_identity_provider_sqlite.c:336 | ||
1697 | #: src/namecache/plugin_namecache_sqlite.c:296 | 1563 | #: src/namecache/plugin_namecache_sqlite.c:296 |
1698 | #: src/namestore/plugin_namestore_sqlite.c:355 | 1564 | #: src/namestore/plugin_namestore_sqlite.c:355 |
1699 | msgid "Tried to close sqlite without finalizing all prepared statements.\n" | 1565 | msgid "Tried to close sqlite without finalizing all prepared statements.\n" |
@@ -1718,7 +1584,7 @@ msgstr "" | |||
1718 | msgid "# queue entries created" | 1584 | msgid "# queue entries created" |
1719 | msgstr "# PING-meddelanden skapade" | 1585 | msgstr "# PING-meddelanden skapade" |
1720 | 1586 | ||
1721 | #: src/datastore/datastore_api.c:740 | 1587 | #: src/datastore/datastore_api.c:760 |
1722 | #, fuzzy | 1588 | #, fuzzy |
1723 | msgid "# status messages received" | 1589 | msgid "# status messages received" |
1724 | msgstr "# krypterade PONG-meddelanden mottagna" | 1590 | msgstr "# krypterade PONG-meddelanden mottagna" |
@@ -1728,36 +1594,36 @@ msgstr "# krypterade PONG-meddelanden mottagna" | |||
1728 | msgid "# Results received" | 1594 | msgid "# Results received" |
1729 | msgstr "# byte mottogs via TCP" | 1595 | msgstr "# byte mottogs via TCP" |
1730 | 1596 | ||
1731 | #: src/datastore/datastore_api.c:941 | 1597 | #: src/datastore/datastore_api.c:920 |
1732 | #, fuzzy | 1598 | #, fuzzy |
1733 | msgid "# datastore connections (re)created" | 1599 | msgid "# datastore connections (re)created" |
1734 | msgstr "Nätverksanslutning" | 1600 | msgstr "Nätverksanslutning" |
1735 | 1601 | ||
1736 | #: src/datastore/datastore_api.c:1055 | 1602 | #: src/datastore/datastore_api.c:1034 |
1737 | msgid "# PUT requests executed" | 1603 | msgid "# PUT requests executed" |
1738 | msgstr "" | 1604 | msgstr "" |
1739 | 1605 | ||
1740 | #: src/datastore/datastore_api.c:1116 | 1606 | #: src/datastore/datastore_api.c:1095 |
1741 | msgid "# RESERVE requests executed" | 1607 | msgid "# RESERVE requests executed" |
1742 | msgstr "" | 1608 | msgstr "" |
1743 | 1609 | ||
1744 | #: src/datastore/datastore_api.c:1181 | 1610 | #: src/datastore/datastore_api.c:1160 |
1745 | msgid "# RELEASE RESERVE requests executed" | 1611 | msgid "# RELEASE RESERVE requests executed" |
1746 | msgstr "" | 1612 | msgstr "" |
1747 | 1613 | ||
1748 | #: src/datastore/datastore_api.c:1259 | 1614 | #: src/datastore/datastore_api.c:1238 |
1749 | msgid "# REMOVE requests executed" | 1615 | msgid "# REMOVE requests executed" |
1750 | msgstr "" | 1616 | msgstr "" |
1751 | 1617 | ||
1752 | #: src/datastore/datastore_api.c:1319 | 1618 | #: src/datastore/datastore_api.c:1298 |
1753 | msgid "# GET REPLICATION requests executed" | 1619 | msgid "# GET REPLICATION requests executed" |
1754 | msgstr "" | 1620 | msgstr "" |
1755 | 1621 | ||
1756 | #: src/datastore/datastore_api.c:1381 | 1622 | #: src/datastore/datastore_api.c:1360 |
1757 | msgid "# GET ZERO ANONYMITY requests executed" | 1623 | msgid "# GET ZERO ANONYMITY requests executed" |
1758 | msgstr "" | 1624 | msgstr "" |
1759 | 1625 | ||
1760 | #: src/datastore/datastore_api.c:1462 | 1626 | #: src/datastore/datastore_api.c:1441 |
1761 | msgid "# GET requests executed" | 1627 | msgid "# GET requests executed" |
1762 | msgstr "" | 1628 | msgstr "" |
1763 | 1629 | ||
@@ -2036,7 +1902,6 @@ msgid "`%s' failed at %s:%u with error: %s" | |||
2036 | msgstr "\"%s\" misslyckades vid %s:%d med fel: %s\n" | 1902 | msgstr "\"%s\" misslyckades vid %s:%d med fel: %s\n" |
2037 | 1903 | ||
2038 | #: src/datastore/plugin_datastore_sqlite.c:271 | 1904 | #: src/datastore/plugin_datastore_sqlite.c:271 |
2039 | #: src/identity-provider/plugin_identity_provider_sqlite.c:212 | ||
2040 | #: src/namecache/plugin_namecache_sqlite.c:194 | 1905 | #: src/namecache/plugin_namecache_sqlite.c:194 |
2041 | #: src/namestore/plugin_namestore_sqlite.c:222 | 1906 | #: src/namestore/plugin_namestore_sqlite.c:222 |
2042 | #: src/peerstore/plugin_peerstore_sqlite.c:535 | 1907 | #: src/peerstore/plugin_peerstore_sqlite.c:535 |
@@ -2061,7 +1926,6 @@ msgid "" | |||
2061 | msgstr "" | 1926 | msgstr "" |
2062 | 1927 | ||
2063 | #: src/datastore/plugin_datastore_sqlite.c:1337 | 1928 | #: src/datastore/plugin_datastore_sqlite.c:1337 |
2064 | #: src/identity-provider/plugin_identity_provider_sqlite.c:711 | ||
2065 | #: src/namecache/plugin_namecache_sqlite.c:603 | 1929 | #: src/namecache/plugin_namecache_sqlite.c:603 |
2066 | #: src/namestore/plugin_namestore_sqlite.c:802 | 1930 | #: src/namestore/plugin_namestore_sqlite.c:802 |
2067 | msgid "Sqlite database running\n" | 1931 | msgid "Sqlite database running\n" |
@@ -2129,6 +1993,52 @@ msgstr "" | |||
2129 | msgid "Prints all packets that go through the DHT." | 1993 | msgid "Prints all packets that go through the DHT." |
2130 | msgstr "" | 1994 | msgstr "" |
2131 | 1995 | ||
1996 | #: src/dht/gnunet_dht_profiler.c:1161 src/testbed/gnunet-testbed-profiler.c:253 | ||
1997 | #, fuzzy, c-format | ||
1998 | msgid "Exiting as the number of peers is %u\n" | ||
1999 | msgstr "Maximalt antal chattklienter uppnått.\n" | ||
2000 | |||
2001 | #: src/dht/gnunet_dht_profiler.c:1188 | ||
2002 | #, fuzzy | ||
2003 | msgid "number of peers to start" | ||
2004 | msgstr "antal iterationer" | ||
2005 | |||
2006 | #: src/dht/gnunet_dht_profiler.c:1194 | ||
2007 | msgid "" | ||
2008 | "maximum number of times we try to search for successor circle formation (0 " | ||
2009 | "for R5N)" | ||
2010 | msgstr "" | ||
2011 | |||
2012 | #: src/dht/gnunet_dht_profiler.c:1200 src/nse/gnunet-nse-profiler.c:853 | ||
2013 | #: src/testbed/gnunet-testbed-profiler.c:304 | ||
2014 | msgid "name of the file with the login information for the testbed" | ||
2015 | msgstr "" | ||
2016 | |||
2017 | #: src/dht/gnunet_dht_profiler.c:1206 | ||
2018 | msgid "delay between rounds for collecting statistics (default: 30 sec)" | ||
2019 | msgstr "" | ||
2020 | |||
2021 | #: src/dht/gnunet_dht_profiler.c:1212 | ||
2022 | msgid "delay to start doing PUTs (default: 1 sec)" | ||
2023 | msgstr "" | ||
2024 | |||
2025 | #: src/dht/gnunet_dht_profiler.c:1218 | ||
2026 | msgid "delay to start doing GETs (default: 5 min)" | ||
2027 | msgstr "" | ||
2028 | |||
2029 | #: src/dht/gnunet_dht_profiler.c:1223 | ||
2030 | msgid "replication degree for DHT PUTs" | ||
2031 | msgstr "" | ||
2032 | |||
2033 | #: src/dht/gnunet_dht_profiler.c:1230 | ||
2034 | msgid "timeout for DHT PUT and GET requests (default: 1 min)" | ||
2035 | msgstr "" | ||
2036 | |||
2037 | #: src/dht/gnunet_dht_profiler.c:1248 | ||
2038 | #, fuzzy | ||
2039 | msgid "Measure quality and performance of the DHT service." | ||
2040 | msgstr "Kan inte tillgå tjänsten" | ||
2041 | |||
2132 | #: src/dht/gnunet-dht-put.c:120 | 2042 | #: src/dht/gnunet-dht-put.c:120 |
2133 | #, fuzzy | 2043 | #, fuzzy |
2134 | msgid "PUT request sent with key" | 2044 | msgid "PUT request sent with key" |
@@ -2405,52 +2315,6 @@ msgstr "" | |||
2405 | msgid "# DHT requests combined" | 2315 | msgid "# DHT requests combined" |
2406 | msgstr "# byte mottogs via TCP" | 2316 | msgstr "# byte mottogs via TCP" |
2407 | 2317 | ||
2408 | #: src/dht/gnunet_dht_profiler.c:1161 src/testbed/gnunet-testbed-profiler.c:255 | ||
2409 | #, fuzzy, c-format | ||
2410 | msgid "Exiting as the number of peers is %u\n" | ||
2411 | msgstr "Maximalt antal chattklienter uppnått.\n" | ||
2412 | |||
2413 | #: src/dht/gnunet_dht_profiler.c:1188 | ||
2414 | #, fuzzy | ||
2415 | msgid "number of peers to start" | ||
2416 | msgstr "antal iterationer" | ||
2417 | |||
2418 | #: src/dht/gnunet_dht_profiler.c:1194 | ||
2419 | msgid "" | ||
2420 | "maximum number of times we try to search for successor circle formation (0 " | ||
2421 | "for R5N)" | ||
2422 | msgstr "" | ||
2423 | |||
2424 | #: src/dht/gnunet_dht_profiler.c:1200 src/nse/gnunet-nse-profiler.c:853 | ||
2425 | #: src/testbed/gnunet-testbed-profiler.c:305 | ||
2426 | msgid "name of the file with the login information for the testbed" | ||
2427 | msgstr "" | ||
2428 | |||
2429 | #: src/dht/gnunet_dht_profiler.c:1206 | ||
2430 | msgid "delay between rounds for collecting statistics (default: 30 sec)" | ||
2431 | msgstr "" | ||
2432 | |||
2433 | #: src/dht/gnunet_dht_profiler.c:1212 | ||
2434 | msgid "delay to start doing PUTs (default: 1 sec)" | ||
2435 | msgstr "" | ||
2436 | |||
2437 | #: src/dht/gnunet_dht_profiler.c:1218 | ||
2438 | msgid "delay to start doing GETs (default: 5 min)" | ||
2439 | msgstr "" | ||
2440 | |||
2441 | #: src/dht/gnunet_dht_profiler.c:1223 | ||
2442 | msgid "replication degree for DHT PUTs" | ||
2443 | msgstr "" | ||
2444 | |||
2445 | #: src/dht/gnunet_dht_profiler.c:1230 | ||
2446 | msgid "timeout for DHT PUT and GET requests (default: 1 min)" | ||
2447 | msgstr "" | ||
2448 | |||
2449 | #: src/dht/gnunet_dht_profiler.c:1248 | ||
2450 | #, fuzzy | ||
2451 | msgid "Measure quality and performance of the DHT service." | ||
2452 | msgstr "Kan inte tillgå tjänsten" | ||
2453 | |||
2454 | #: src/dht/plugin_block_dht.c:187 | 2318 | #: src/dht/plugin_block_dht.c:187 |
2455 | #, fuzzy, c-format | 2319 | #, fuzzy, c-format |
2456 | msgid "Block not of type %u\n" | 2320 | msgid "Block not of type %u\n" |
@@ -2996,7 +2860,7 @@ msgstr "Misslyckades att ta emot svar till \"%s\" meddelande från gnunetd\n" | |||
2996 | msgid "Failed to not connect to `%s' service.\n" | 2860 | msgid "Failed to not connect to `%s' service.\n" |
2997 | msgstr "Misslyckades att initiera tjänsten \"%s\".\n" | 2861 | msgstr "Misslyckades att initiera tjänsten \"%s\".\n" |
2998 | 2862 | ||
2999 | #: src/fs/fs_misc.c:126 | 2863 | #: src/fs/fs_misc.c:128 |
3000 | #, fuzzy, c-format | 2864 | #, fuzzy, c-format |
3001 | msgid "Did not find mime type `%s' in extension list.\n" | 2865 | msgid "Did not find mime type `%s' in extension list.\n" |
3002 | msgstr "Kunde inte hitta motpart \"%s\" i routingtabell!\n" | 2866 | msgstr "Kunde inte hitta motpart \"%s\" i routingtabell!\n" |
@@ -3437,6 +3301,15 @@ msgid "" | |||
3437 | "chk/...)" | 3301 | "chk/...)" |
3438 | msgstr "" | 3302 | msgstr "" |
3439 | 3303 | ||
3304 | #: src/fs/gnunet-fs.c:119 | ||
3305 | msgid "print a list of all indexed files" | ||
3306 | msgstr "" | ||
3307 | |||
3308 | #: src/fs/gnunet-fs.c:130 | ||
3309 | #, fuzzy | ||
3310 | msgid "Special file-sharing operations" | ||
3311 | msgstr "Visa alla alternativ" | ||
3312 | |||
3440 | #: src/fs/gnunet-fs-profiler.c:211 | 3313 | #: src/fs/gnunet-fs-profiler.c:211 |
3441 | msgid "run the experiment with COUNT peers" | 3314 | msgid "run the experiment with COUNT peers" |
3442 | msgstr "" | 3315 | msgstr "" |
@@ -3453,15 +3326,6 @@ msgstr "" | |||
3453 | msgid "run a testbed to measure file-sharing performance" | 3326 | msgid "run a testbed to measure file-sharing performance" |
3454 | msgstr "" | 3327 | msgstr "" |
3455 | 3328 | ||
3456 | #: src/fs/gnunet-fs.c:119 | ||
3457 | msgid "print a list of all indexed files" | ||
3458 | msgstr "" | ||
3459 | |||
3460 | #: src/fs/gnunet-fs.c:130 | ||
3461 | #, fuzzy | ||
3462 | msgid "Special file-sharing operations" | ||
3463 | msgstr "Visa alla alternativ" | ||
3464 | |||
3465 | #: src/fs/gnunet-publish.c:219 src/fs/gnunet-publish.c:231 | 3329 | #: src/fs/gnunet-publish.c:219 src/fs/gnunet-publish.c:231 |
3466 | #, c-format | 3330 | #, c-format |
3467 | msgid "Publishing `%s' at %llu/%llu (%s remaining)\n" | 3331 | msgid "Publishing `%s' at %llu/%llu (%s remaining)\n" |
@@ -4149,11 +4013,22 @@ msgstr "" | |||
4149 | msgid "GNUnet DNS-to-GNS proxy (a DNS server)" | 4013 | msgid "GNUnet DNS-to-GNS proxy (a DNS server)" |
4150 | msgstr "" | 4014 | msgstr "" |
4151 | 4015 | ||
4152 | #: src/gns/gnunet-gns-helper-service-w32.c:602 | 4016 | #: src/gns/gnunet-gns.c:235 src/gns/plugin_rest_gns.c:346 |
4153 | msgid "Not ready to process requests, lacking ego data\n" | 4017 | #, c-format |
4018 | msgid "Invalid typename specified, assuming `ANY'\n" | ||
4019 | msgstr "" | ||
4020 | |||
4021 | #: src/gns/gnunet-gns.c:252 | ||
4022 | #, c-format | ||
4023 | msgid "Please specify name to lookup!\n" | ||
4024 | msgstr "" | ||
4025 | |||
4026 | #: src/gns/gnunet-gns.c:276 | ||
4027 | #, c-format | ||
4028 | msgid "Ego for `%s' not found, cannot perform lookup.\n" | ||
4154 | msgstr "" | 4029 | msgstr "" |
4155 | 4030 | ||
4156 | #: src/gns/gnunet-gns-helper-service-w32.c:701 src/gns/gnunet-gns.c:315 | 4031 | #: src/gns/gnunet-gns.c:315 src/gns/gnunet-gns-helper-service-w32.c:701 |
4157 | #: src/gns/plugin_rest_gns.c:422 | 4032 | #: src/gns/plugin_rest_gns.c:422 |
4158 | #, c-format | 4033 | #, c-format |
4159 | msgid "" | 4034 | msgid "" |
@@ -4161,6 +4036,53 @@ msgid "" | |||
4161 | "gns-import.sh?\n" | 4036 | "gns-import.sh?\n" |
4162 | msgstr "" | 4037 | msgstr "" |
4163 | 4038 | ||
4039 | #: src/gns/gnunet-gns.c:355 src/gns/gnunet-gns-helper-service-w32.c:727 | ||
4040 | #, fuzzy, c-format | ||
4041 | msgid "Failed to connect to GNS\n" | ||
4042 | msgstr "Misslyckades att ansluta till gnunetd.\n" | ||
4043 | |||
4044 | #: src/gns/gnunet-gns.c:374 | ||
4045 | #, c-format | ||
4046 | msgid "Public key `%s' is not well-formed\n" | ||
4047 | msgstr "" | ||
4048 | |||
4049 | #: src/gns/gnunet-gns.c:428 | ||
4050 | msgid "Lookup a record for the given name" | ||
4051 | msgstr "" | ||
4052 | |||
4053 | #: src/gns/gnunet-gns.c:434 | ||
4054 | #, fuzzy | ||
4055 | msgid "Specify the type of the record to lookup" | ||
4056 | msgstr "ange prioritet för innehållet" | ||
4057 | |||
4058 | #: src/gns/gnunet-gns.c:440 | ||
4059 | #, fuzzy | ||
4060 | msgid "Specify timeout for the lookup" | ||
4061 | msgstr "ange prioritet för innehållet" | ||
4062 | |||
4063 | #: src/gns/gnunet-gns.c:445 | ||
4064 | msgid "No unneeded output" | ||
4065 | msgstr "" | ||
4066 | |||
4067 | #: src/gns/gnunet-gns.c:451 | ||
4068 | #, fuzzy | ||
4069 | msgid "Specify the public key of the zone to lookup the record in" | ||
4070 | msgstr "ange prioritet för innehållet" | ||
4071 | |||
4072 | #: src/gns/gnunet-gns.c:457 | ||
4073 | #, fuzzy | ||
4074 | msgid "Specify the name of the ego of the zone to lookup the record in" | ||
4075 | msgstr "ange prioritet för innehållet" | ||
4076 | |||
4077 | #: src/gns/gnunet-gns.c:476 | ||
4078 | #, fuzzy | ||
4079 | msgid "GNUnet GNS resolver tool" | ||
4080 | msgstr "Spåra GNUnets nätverkstopologi." | ||
4081 | |||
4082 | #: src/gns/gnunet-gns-helper-service-w32.c:602 | ||
4083 | msgid "Not ready to process requests, lacking ego data\n" | ||
4084 | msgstr "" | ||
4085 | |||
4164 | #: src/gns/gnunet-gns-helper-service-w32.c:739 | 4086 | #: src/gns/gnunet-gns-helper-service-w32.c:739 |
4165 | #, fuzzy, c-format | 4087 | #, fuzzy, c-format |
4166 | msgid "Failed to connect to identity service\n" | 4088 | msgid "Failed to connect to identity service\n" |
@@ -4185,165 +4107,112 @@ msgstr "" | |||
4185 | msgid "%s failed at %s:%d: `%s'\n" | 4107 | msgid "%s failed at %s:%d: `%s'\n" |
4186 | msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n" | 4108 | msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n" |
4187 | 4109 | ||
4188 | #: src/gns/gnunet-gns-proxy.c:878 | 4110 | #: src/gns/gnunet-gns-proxy.c:887 |
4189 | #, fuzzy, c-format | 4111 | #, fuzzy, c-format |
4190 | msgid "Unsupported CURL SSL backend %d\n" | 4112 | msgid "Unsupported CURL SSL backend %d\n" |
4191 | msgstr "Kommando \"%s\" stöds ej. Avbryter.\n" | 4113 | msgstr "Kommando \"%s\" stöds ej. Avbryter.\n" |
4192 | 4114 | ||
4193 | #: src/gns/gnunet-gns-proxy.c:901 | 4115 | #: src/gns/gnunet-gns-proxy.c:910 |
4194 | #, fuzzy, c-format | 4116 | #, fuzzy, c-format |
4195 | msgid "Failed to fetch CN from cert: %s\n" | 4117 | msgid "Failed to fetch CN from cert: %s\n" |
4196 | msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n" | 4118 | msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n" |
4197 | 4119 | ||
4198 | #: src/gns/gnunet-gns-proxy.c:924 | 4120 | #: src/gns/gnunet-gns-proxy.c:933 |
4199 | #, fuzzy, c-format | 4121 | #, fuzzy, c-format |
4200 | msgid "Failed to initialize DANE: %s\n" | 4122 | msgid "Failed to initialize DANE: %s\n" |
4201 | msgstr "Kunde inte initiera SQLite.\n" | 4123 | msgstr "Kunde inte initiera SQLite.\n" |
4202 | 4124 | ||
4203 | #: src/gns/gnunet-gns-proxy.c:937 | 4125 | #: src/gns/gnunet-gns-proxy.c:946 |
4204 | #, fuzzy, c-format | 4126 | #, fuzzy, c-format |
4205 | msgid "Failed to parse DANE record: %s\n" | 4127 | msgid "Failed to parse DANE record: %s\n" |
4206 | msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n" | 4128 | msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n" |
4207 | 4129 | ||
4208 | #: src/gns/gnunet-gns-proxy.c:952 | 4130 | #: src/gns/gnunet-gns-proxy.c:961 |
4209 | #, fuzzy, c-format | 4131 | #, fuzzy, c-format |
4210 | msgid "Failed to verify TLS connection using DANE: %s\n" | 4132 | msgid "Failed to verify TLS connection using DANE: %s\n" |
4211 | msgstr "Kunde inte spara konfigurationsfil \"%s\":" | 4133 | msgstr "Kunde inte spara konfigurationsfil \"%s\":" |
4212 | 4134 | ||
4213 | #: src/gns/gnunet-gns-proxy.c:962 | 4135 | #: src/gns/gnunet-gns-proxy.c:971 |
4214 | #, c-format | 4136 | #, c-format |
4215 | msgid "Failed DANE verification failed with GnuTLS verify status code: %u\n" | 4137 | msgid "Failed DANE verification failed with GnuTLS verify status code: %u\n" |
4216 | msgstr "" | 4138 | msgstr "" |
4217 | 4139 | ||
4218 | #: src/gns/gnunet-gns-proxy.c:986 | 4140 | #: src/gns/gnunet-gns-proxy.c:995 |
4219 | #, c-format | 4141 | #, c-format |
4220 | msgid "SSL certificate subject name (%s) does not match `%s'\n" | 4142 | msgid "SSL certificate subject name (%s) does not match `%s'\n" |
4221 | msgstr "" | 4143 | msgstr "" |
4222 | 4144 | ||
4223 | #: src/gns/gnunet-gns-proxy.c:1095 | 4145 | #: src/gns/gnunet-gns-proxy.c:1104 |
4224 | #, c-format | 4146 | #, c-format |
4225 | msgid "Cookie domain `%s' supplied by server is invalid\n" | 4147 | msgid "Cookie domain `%s' supplied by server is invalid\n" |
4226 | msgstr "" | 4148 | msgstr "" |
4227 | 4149 | ||
4228 | #: src/gns/gnunet-gns-proxy.c:1699 | 4150 | #: src/gns/gnunet-gns-proxy.c:1709 |
4229 | #, fuzzy, c-format | 4151 | #, fuzzy, c-format |
4230 | msgid "Unsupported HTTP method `%s'\n" | 4152 | msgid "Unsupported HTTP method `%s'\n" |
4231 | msgstr "Kommando \"%s\" stöds ej. Avbryter.\n" | 4153 | msgstr "Kommando \"%s\" stöds ej. Avbryter.\n" |
4232 | 4154 | ||
4233 | #: src/gns/gnunet-gns-proxy.c:2162 | 4155 | #: src/gns/gnunet-gns-proxy.c:2172 |
4234 | #, fuzzy, c-format | 4156 | #, fuzzy, c-format |
4235 | msgid "Unable to import private key from file `%s'\n" | 4157 | msgid "Unable to import private key from file `%s'\n" |
4236 | msgstr "Kunde inte skapa användarkonto:" | 4158 | msgstr "Kunde inte skapa användarkonto:" |
4237 | 4159 | ||
4238 | #: src/gns/gnunet-gns-proxy.c:2192 | 4160 | #: src/gns/gnunet-gns-proxy.c:2202 |
4239 | #, fuzzy, c-format | 4161 | #, fuzzy, c-format |
4240 | msgid "Unable to import certificate %s\n" | 4162 | msgid "Unable to import certificate %s\n" |
4241 | msgstr "Kunde inte spara konfigurationsfil \"%s\":" | 4163 | msgstr "Kunde inte spara konfigurationsfil \"%s\":" |
4242 | 4164 | ||
4243 | #: src/gns/gnunet-gns-proxy.c:2365 | 4165 | #: src/gns/gnunet-gns-proxy.c:2375 |
4244 | #, fuzzy, c-format | 4166 | #, fuzzy, c-format |
4245 | msgid "Failed to start HTTPS server for `%s'\n" | 4167 | msgid "Failed to start HTTPS server for `%s'\n" |
4246 | msgstr "Misslyckades att starta samling.\n" | 4168 | msgstr "Misslyckades att starta samling.\n" |
4247 | 4169 | ||
4248 | #: src/gns/gnunet-gns-proxy.c:2384 src/rest/gnunet-rest-server.c:533 | 4170 | #: src/gns/gnunet-gns-proxy.c:2394 src/rest/gnunet-rest-server.c:533 |
4249 | #, fuzzy | 4171 | #, fuzzy |
4250 | msgid "Failed to pass client to MHD\n" | 4172 | msgid "Failed to pass client to MHD\n" |
4251 | msgstr "Misslyckades att ansluta till gnunetd.\n" | 4173 | msgstr "Misslyckades att ansluta till gnunetd.\n" |
4252 | 4174 | ||
4253 | #: src/gns/gnunet-gns-proxy.c:2704 | 4175 | #: src/gns/gnunet-gns-proxy.c:2716 |
4254 | #, fuzzy, c-format | 4176 | #, fuzzy, c-format |
4255 | msgid "Unsupported socks version %d\n" | 4177 | msgid "Unsupported socks version %d\n" |
4256 | msgstr "Kommando \"%s\" stöds ej. Avbryter.\n" | 4178 | msgstr "Kommando \"%s\" stöds ej. Avbryter.\n" |
4257 | 4179 | ||
4258 | #: src/gns/gnunet-gns-proxy.c:2733 | 4180 | #: src/gns/gnunet-gns-proxy.c:2745 |
4259 | #, fuzzy, c-format | 4181 | #, fuzzy, c-format |
4260 | msgid "Unsupported socks command %d\n" | 4182 | msgid "Unsupported socks command %d\n" |
4261 | msgstr "Kommando \"%s\" stöds ej. Avbryter.\n" | 4183 | msgstr "Kommando \"%s\" stöds ej. Avbryter.\n" |
4262 | 4184 | ||
4263 | #: src/gns/gnunet-gns-proxy.c:2751 src/gns/gnunet-gns-proxy.c:2780 | 4185 | #: src/gns/gnunet-gns-proxy.c:2763 src/gns/gnunet-gns-proxy.c:2792 |
4264 | msgid "SSL connection to plain IPv4 address requested\n" | 4186 | msgid "SSL connection to plain IPv4 address requested\n" |
4265 | msgstr "" | 4187 | msgstr "" |
4266 | 4188 | ||
4267 | #: src/gns/gnunet-gns-proxy.c:2830 | 4189 | #: src/gns/gnunet-gns-proxy.c:2842 |
4268 | #, fuzzy, c-format | 4190 | #, fuzzy, c-format |
4269 | msgid "Unsupported socks address type %d\n" | 4191 | msgid "Unsupported socks address type %d\n" |
4270 | msgstr "Kommando \"%s\" stöds ej. Avbryter.\n" | 4192 | msgstr "Kommando \"%s\" stöds ej. Avbryter.\n" |
4271 | 4193 | ||
4272 | #: src/gns/gnunet-gns-proxy.c:3165 src/gns/gnunet-service-gns.c:403 | 4194 | #: src/gns/gnunet-gns-proxy.c:3177 src/gns/gnunet-service-gns.c:403 |
4273 | #, c-format | 4195 | #, c-format |
4274 | msgid "No ego configured for `%s`\n" | 4196 | msgid "No ego configured for `%s`\n" |
4275 | msgstr "" | 4197 | msgstr "" |
4276 | 4198 | ||
4277 | #: src/gns/gnunet-gns-proxy.c:3226 | 4199 | #: src/gns/gnunet-gns-proxy.c:3238 |
4278 | #, fuzzy, c-format | 4200 | #, fuzzy, c-format |
4279 | msgid "Failed to load SSL/TLS key and certificate from `%s'\n" | 4201 | msgid "Failed to load SSL/TLS key and certificate from `%s'\n" |
4280 | msgstr "Misslyckades att läsa kompislista från \"%s\"\n" | 4202 | msgstr "Misslyckades att läsa kompislista från \"%s\"\n" |
4281 | 4203 | ||
4282 | #: src/gns/gnunet-gns-proxy.c:3269 | 4204 | #: src/gns/gnunet-gns-proxy.c:3281 |
4283 | msgid "listen on specified port (default: 7777)" | 4205 | msgid "listen on specified port (default: 7777)" |
4284 | msgstr "" | 4206 | msgstr "" |
4285 | 4207 | ||
4286 | #: src/gns/gnunet-gns-proxy.c:3275 | 4208 | #: src/gns/gnunet-gns-proxy.c:3287 |
4287 | msgid "pem file to use as CA" | 4209 | msgid "pem file to use as CA" |
4288 | msgstr "" | 4210 | msgstr "" |
4289 | 4211 | ||
4290 | #: src/gns/gnunet-gns-proxy.c:3300 | 4212 | #: src/gns/gnunet-gns-proxy.c:3312 |
4291 | msgid "GNUnet GNS proxy" | 4213 | msgid "GNUnet GNS proxy" |
4292 | msgstr "" | 4214 | msgstr "" |
4293 | 4215 | ||
4294 | #: src/gns/gnunet-gns.c:235 src/gns/plugin_rest_gns.c:346 | ||
4295 | #, c-format | ||
4296 | msgid "Invalid typename specified, assuming `ANY'\n" | ||
4297 | msgstr "" | ||
4298 | |||
4299 | #: src/gns/gnunet-gns.c:252 | ||
4300 | #, c-format | ||
4301 | msgid "Please specify name to lookup!\n" | ||
4302 | msgstr "" | ||
4303 | |||
4304 | #: src/gns/gnunet-gns.c:276 | ||
4305 | #, c-format | ||
4306 | msgid "Ego for `%s' not found, cannot perform lookup.\n" | ||
4307 | msgstr "" | ||
4308 | |||
4309 | #: src/gns/gnunet-gns.c:374 | ||
4310 | #, c-format | ||
4311 | msgid "Public key `%s' is not well-formed\n" | ||
4312 | msgstr "" | ||
4313 | |||
4314 | #: src/gns/gnunet-gns.c:428 | ||
4315 | msgid "Lookup a record for the given name" | ||
4316 | msgstr "" | ||
4317 | |||
4318 | #: src/gns/gnunet-gns.c:434 | ||
4319 | #, fuzzy | ||
4320 | msgid "Specify the type of the record to lookup" | ||
4321 | msgstr "ange prioritet för innehållet" | ||
4322 | |||
4323 | #: src/gns/gnunet-gns.c:440 | ||
4324 | #, fuzzy | ||
4325 | msgid "Specify timeout for the lookup" | ||
4326 | msgstr "ange prioritet för innehållet" | ||
4327 | |||
4328 | #: src/gns/gnunet-gns.c:445 | ||
4329 | msgid "No unneeded output" | ||
4330 | msgstr "" | ||
4331 | |||
4332 | #: src/gns/gnunet-gns.c:451 | ||
4333 | #, fuzzy | ||
4334 | msgid "Specify the public key of the zone to lookup the record in" | ||
4335 | msgstr "ange prioritet för innehållet" | ||
4336 | |||
4337 | #: src/gns/gnunet-gns.c:457 | ||
4338 | #, fuzzy | ||
4339 | msgid "Specify the name of the ego of the zone to lookup the record in" | ||
4340 | msgstr "ange prioritet för innehållet" | ||
4341 | |||
4342 | #: src/gns/gnunet-gns.c:476 | ||
4343 | #, fuzzy | ||
4344 | msgid "GNUnet GNS resolver tool" | ||
4345 | msgstr "Spåra GNUnets nätverkstopologi." | ||
4346 | |||
4347 | #: src/gns/gnunet-service-gns.c:442 | 4216 | #: src/gns/gnunet-service-gns.c:442 |
4348 | #, fuzzy | 4217 | #, fuzzy |
4349 | msgid "Failed to connect to the namecache!\n" | 4218 | msgid "Failed to connect to the namecache!\n" |
@@ -4408,35 +4277,45 @@ msgstr "" | |||
4408 | msgid "Hostname `%s' is not well-formed, resolution fails\n" | 4277 | msgid "Hostname `%s' is not well-formed, resolution fails\n" |
4409 | msgstr "" | 4278 | msgstr "" |
4410 | 4279 | ||
4411 | #: src/gns/plugin_gnsrecord_gns.c:179 | 4280 | #: src/gns/plugin_gnsrecord_gns.c:203 |
4412 | #, fuzzy, c-format | 4281 | #, fuzzy, c-format |
4413 | msgid "Unable to parse PKEY record `%s'\n" | 4282 | msgid "Unable to parse PKEY record `%s'\n" |
4414 | msgstr "Misslyckades att läsa kompislista från \"%s\"\n" | 4283 | msgstr "Misslyckades att läsa kompislista från \"%s\"\n" |
4415 | 4284 | ||
4416 | #: src/gns/plugin_gnsrecord_gns.c:208 | 4285 | #: src/gns/plugin_gnsrecord_gns.c:232 |
4417 | #, fuzzy, c-format | 4286 | #, fuzzy, c-format |
4418 | msgid "Unable to parse GNS2DNS record `%s'\n" | 4287 | msgid "Unable to parse GNS2DNS record `%s'\n" |
4419 | msgstr "Misslyckades att läsa kompislista från \"%s\"\n" | 4288 | msgstr "Misslyckades att läsa kompislista från \"%s\"\n" |
4420 | 4289 | ||
4421 | #: src/gns/plugin_gnsrecord_gns.c:229 | 4290 | #: src/gns/plugin_gnsrecord_gns.c:253 |
4422 | #, fuzzy, c-format | 4291 | #, fuzzy, c-format |
4423 | msgid "Failed to serialize GNS2DNS record with value `%s'\n" | 4292 | msgid "Failed to serialize GNS2DNS record with value `%s'\n" |
4424 | msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n" | 4293 | msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n" |
4425 | 4294 | ||
4426 | #: src/gns/plugin_gnsrecord_gns.c:252 | 4295 | #: src/gns/plugin_gnsrecord_gns.c:276 |
4427 | #, fuzzy, c-format | 4296 | #, fuzzy, c-format |
4428 | msgid "Unable to parse VPN record string `%s'\n" | 4297 | msgid "Unable to parse VPN record string `%s'\n" |
4429 | msgstr "Misslyckades att läsa kompislista från \"%s\"\n" | 4298 | msgstr "Misslyckades att läsa kompislista från \"%s\"\n" |
4430 | 4299 | ||
4431 | #: src/gns/plugin_gnsrecord_gns.c:288 | 4300 | #: src/gns/plugin_gnsrecord_gns.c:312 |
4432 | #, fuzzy, c-format | 4301 | #, fuzzy, c-format |
4433 | msgid "Unable to parse BOX record string `%s'\n" | 4302 | msgid "Unable to parse BOX record string `%s'\n" |
4434 | msgstr "Misslyckades att läsa kompislista från \"%s\"\n" | 4303 | msgstr "Misslyckades att läsa kompislista från \"%s\"\n" |
4435 | 4304 | ||
4305 | #: src/gns/plugin_gnsrecord_gns.c:360 | ||
4306 | #, fuzzy, c-format | ||
4307 | msgid "Unable to parse REVERSE record string `%s'\n" | ||
4308 | msgstr "Misslyckades att läsa kompislista från \"%s\"\n" | ||
4309 | |||
4436 | #: src/gns/plugin_rest_gns.c:384 | 4310 | #: src/gns/plugin_rest_gns.c:384 |
4437 | msgid "Ego for not found, cannot perform lookup.\n" | 4311 | msgid "Ego for not found, cannot perform lookup.\n" |
4438 | msgstr "" | 4312 | msgstr "" |
4439 | 4313 | ||
4314 | #: src/gns/plugin_rest_gns.c:668 | ||
4315 | #, fuzzy | ||
4316 | msgid "GNS REST API initialized\n" | ||
4317 | msgstr " Anslutning misslyckades\n" | ||
4318 | |||
4440 | #: src/gnsrecord/plugin_gnsrecord_dns.c:359 | 4319 | #: src/gnsrecord/plugin_gnsrecord_dns.c:359 |
4441 | #, fuzzy, c-format | 4320 | #, fuzzy, c-format |
4442 | msgid "Unable to parse IPv4 address `%s'\n" | 4321 | msgid "Unable to parse IPv4 address `%s'\n" |
@@ -4542,37 +4421,37 @@ msgstr "Fel vid skapandet av användare" | |||
4542 | msgid "Modified %u addresses, wrote %u bytes\n" | 4421 | msgid "Modified %u addresses, wrote %u bytes\n" |
4543 | msgstr "" | 4422 | msgstr "" |
4544 | 4423 | ||
4545 | #: src/hello/hello.c:1103 | 4424 | #: src/hello/hello.c:1110 |
4546 | #, fuzzy | 4425 | #, fuzzy |
4547 | msgid "Failed to parse HELLO message: missing expiration time\n" | 4426 | msgid "Failed to parse HELLO message: missing expiration time\n" |
4548 | msgstr "Kunde inte spara konfiguration!" | 4427 | msgstr "Kunde inte spara konfiguration!" |
4549 | 4428 | ||
4550 | #: src/hello/hello.c:1112 | 4429 | #: src/hello/hello.c:1119 |
4551 | #, fuzzy | 4430 | #, fuzzy |
4552 | msgid "Failed to parse HELLO message: invalid expiration time\n" | 4431 | msgid "Failed to parse HELLO message: invalid expiration time\n" |
4553 | msgstr "Kunde inte spara konfiguration!" | 4432 | msgstr "Kunde inte spara konfiguration!" |
4554 | 4433 | ||
4555 | #: src/hello/hello.c:1122 | 4434 | #: src/hello/hello.c:1129 |
4556 | #, fuzzy | 4435 | #, fuzzy |
4557 | msgid "Failed to parse HELLO message: malformed\n" | 4436 | msgid "Failed to parse HELLO message: malformed\n" |
4558 | msgstr "Misslyckades att läsa kompislista från \"%s\"\n" | 4437 | msgstr "Misslyckades att läsa kompislista från \"%s\"\n" |
4559 | 4438 | ||
4560 | #: src/hello/hello.c:1133 | 4439 | #: src/hello/hello.c:1140 |
4561 | #, fuzzy | 4440 | #, fuzzy |
4562 | msgid "Failed to parse HELLO message: missing transport plugin\n" | 4441 | msgid "Failed to parse HELLO message: missing transport plugin\n" |
4563 | msgstr "Kunde inte slå upp \"%s\": %s\n" | 4442 | msgstr "Kunde inte slå upp \"%s\": %s\n" |
4564 | 4443 | ||
4565 | #: src/hello/hello.c:1151 | 4444 | #: src/hello/hello.c:1158 |
4566 | #, c-format | 4445 | #, c-format |
4567 | msgid "Plugin `%s' not found, skipping address\n" | 4446 | msgid "Plugin `%s' not found, skipping address\n" |
4568 | msgstr "" | 4447 | msgstr "" |
4569 | 4448 | ||
4570 | #: src/hello/hello.c:1159 | 4449 | #: src/hello/hello.c:1166 |
4571 | #, c-format | 4450 | #, c-format |
4572 | msgid "Plugin `%s' does not support URIs yet\n" | 4451 | msgid "Plugin `%s' does not support URIs yet\n" |
4573 | msgstr "" | 4452 | msgstr "" |
4574 | 4453 | ||
4575 | #: src/hello/hello.c:1174 | 4454 | #: src/hello/hello.c:1181 |
4576 | #, fuzzy, c-format | 4455 | #, fuzzy, c-format |
4577 | msgid "Failed to parse `%s' as an address for plugin `%s'\n" | 4456 | msgid "Failed to parse `%s' as an address for plugin `%s'\n" |
4578 | msgstr "Misslyckades att binda till UDP-port %d.\n" | 4457 | msgstr "Misslyckades att binda till UDP-port %d.\n" |
@@ -4822,7 +4701,7 @@ msgid "# hostlist advertisements send" | |||
4822 | msgstr "" | 4701 | msgstr "" |
4823 | 4702 | ||
4824 | #: src/hostlist/gnunet-daemon-hostlist_server.c:679 | 4703 | #: src/hostlist/gnunet-daemon-hostlist_server.c:679 |
4825 | #: src/transport/gnunet-service-transport.c:2803 | 4704 | #: src/transport/gnunet-service-transport.c:2815 |
4826 | #, fuzzy | 4705 | #, fuzzy |
4827 | msgid "Could not access PEERINFO service. Exiting.\n" | 4706 | msgid "Could not access PEERINFO service. Exiting.\n" |
4828 | msgstr "Kunde inte komma åt namnrymdsinformation.\n" | 4707 | msgstr "Kunde inte komma åt namnrymdsinformation.\n" |
@@ -4867,53 +4746,6 @@ msgstr "\"%s\" är inte tillgänglig." | |||
4867 | msgid "Could not start hostlist HTTP server on port %u\n" | 4746 | msgid "Could not start hostlist HTTP server on port %u\n" |
4868 | msgstr "" | 4747 | msgstr "" |
4869 | 4748 | ||
4870 | #: src/identity-provider/gnunet-idp.c:348 | ||
4871 | #, fuzzy | ||
4872 | msgid "Ego is required\n" | ||
4873 | msgstr "%s: flagga \"%s\" är tvetydig\n" | ||
4874 | |||
4875 | #: src/identity-provider/gnunet-idp.c:370 | ||
4876 | msgid "Add attribute" | ||
4877 | msgstr "" | ||
4878 | |||
4879 | #: src/identity-provider/gnunet-idp.c:376 | ||
4880 | msgid "Attribute value" | ||
4881 | msgstr "" | ||
4882 | |||
4883 | #: src/identity-provider/gnunet-idp.c:381 | ||
4884 | msgid "Ego" | ||
4885 | msgstr "" | ||
4886 | |||
4887 | #: src/identity-provider/gnunet-idp.c:386 | ||
4888 | msgid "Audience (relying party)" | ||
4889 | msgstr "" | ||
4890 | |||
4891 | #: src/identity-provider/gnunet-idp.c:390 | ||
4892 | msgid "List attributes for Ego" | ||
4893 | msgstr "" | ||
4894 | |||
4895 | #: src/identity-provider/gnunet-idp.c:395 | ||
4896 | msgid "Issue a ticket" | ||
4897 | msgstr "" | ||
4898 | |||
4899 | #: src/identity-provider/gnunet-idp.c:400 | ||
4900 | msgid "Consume a ticket" | ||
4901 | msgstr "" | ||
4902 | |||
4903 | #: src/identity-provider/gnunet-idp.c:405 | ||
4904 | msgid "Revoke a ticket" | ||
4905 | msgstr "" | ||
4906 | |||
4907 | #: src/identity-provider/identity_provider_api.c:429 | ||
4908 | #, fuzzy | ||
4909 | msgid "failed to store record\n" | ||
4910 | msgstr "Misslyckades att starta samling.\n" | ||
4911 | |||
4912 | #: src/identity-provider/plugin_rest_identity_provider.c:1175 | ||
4913 | #, fuzzy | ||
4914 | msgid "Identity Provider REST API initialized\n" | ||
4915 | msgstr " Anslutning misslyckades\n" | ||
4916 | |||
4917 | #: src/identity/gnunet-identity.c:179 | 4749 | #: src/identity/gnunet-identity.c:179 |
4918 | #, fuzzy, c-format | 4750 | #, fuzzy, c-format |
4919 | msgid "Failed to create ego: %s\n" | 4751 | msgid "Failed to create ego: %s\n" |
@@ -5001,11 +4833,34 @@ msgstr "Kunde inte spara konfigurationsfil \"%s\":" | |||
5001 | msgid "Failed to create directory `%s' for storing egos\n" | 4833 | msgid "Failed to create directory `%s' for storing egos\n" |
5002 | msgstr "Misslyckades att läsa kompislista från \"%s\"\n" | 4834 | msgstr "Misslyckades att läsa kompislista från \"%s\"\n" |
5003 | 4835 | ||
5004 | #: src/identity/plugin_rest_identity.c:964 | 4836 | #: src/identity/plugin_rest_identity.c:967 |
5005 | #, fuzzy | 4837 | #, fuzzy |
5006 | msgid "Identity REST API initialized\n" | 4838 | msgid "Identity REST API initialized\n" |
5007 | msgstr " Anslutning misslyckades\n" | 4839 | msgstr " Anslutning misslyckades\n" |
5008 | 4840 | ||
4841 | #: src/identity-provider/gnunet-identity-token.c:66 | ||
4842 | #, fuzzy | ||
4843 | msgid "Option `-t' is required\n" | ||
4844 | msgstr "%s: flagga \"%s\" är tvetydig\n" | ||
4845 | |||
4846 | #: src/identity-provider/gnunet-identity-token.c:77 | ||
4847 | #, fuzzy, c-format | ||
4848 | msgid "Token `%s' is malformed\n" | ||
4849 | msgstr "Ogiltigt argument: \"%s\"\n" | ||
4850 | |||
4851 | #: src/identity-provider/gnunet-identity-token.c:166 | ||
4852 | msgid "GNUid token" | ||
4853 | msgstr "" | ||
4854 | |||
4855 | #: src/identity-provider/gnunet-identity-token.c:171 | ||
4856 | msgid "Print token contents" | ||
4857 | msgstr "" | ||
4858 | |||
4859 | #: src/identity-provider/plugin_rest_identity_provider.c:1166 | ||
4860 | #, fuzzy | ||
4861 | msgid "Identity Token REST API initialized\n" | ||
4862 | msgstr " Anslutning misslyckades\n" | ||
4863 | |||
5009 | #: src/json/json.c:119 | 4864 | #: src/json/json.c:119 |
5010 | #, fuzzy, c-format | 4865 | #, fuzzy, c-format |
5011 | msgid "Failed to parse JSON in option `%s': %s (%s)\n" | 4866 | msgid "Failed to parse JSON in option `%s': %s (%s)\n" |
@@ -5106,66 +4961,6 @@ msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n" | |||
5106 | msgid "flat plugin running\n" | 4961 | msgid "flat plugin running\n" |
5107 | msgstr "" | 4962 | msgstr "" |
5108 | 4963 | ||
5109 | #: src/namestore/gnunet-namestore-fcfsd.c:508 | ||
5110 | #, fuzzy, c-format | ||
5111 | msgid "Unsupported form value `%s'\n" | ||
5112 | msgstr "Kommando \"%s\" stöds ej. Avbryter.\n" | ||
5113 | |||
5114 | #: src/namestore/gnunet-namestore-fcfsd.c:535 | ||
5115 | #, fuzzy, c-format | ||
5116 | msgid "Failed to create record for domain `%s': %s\n" | ||
5117 | msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n" | ||
5118 | |||
5119 | #: src/namestore/gnunet-namestore-fcfsd.c:555 | ||
5120 | msgid "Error when mapping zone to name\n" | ||
5121 | msgstr "" | ||
5122 | |||
5123 | #: src/namestore/gnunet-namestore-fcfsd.c:585 | ||
5124 | #, c-format | ||
5125 | msgid "Found existing name `%s' for the given key\n" | ||
5126 | msgstr "" | ||
5127 | |||
5128 | #: src/namestore/gnunet-namestore-fcfsd.c:662 | ||
5129 | #, c-format | ||
5130 | msgid "Found %u existing records for domain `%s'\n" | ||
5131 | msgstr "" | ||
5132 | |||
5133 | #: src/namestore/gnunet-namestore-fcfsd.c:718 | ||
5134 | #, fuzzy, c-format | ||
5135 | msgid "Failed to create page for `%s'\n" | ||
5136 | msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n" | ||
5137 | |||
5138 | #: src/namestore/gnunet-namestore-fcfsd.c:734 | ||
5139 | #, fuzzy, c-format | ||
5140 | msgid "Failed to setup post processor for `%s'\n" | ||
5141 | msgstr "Misslyckades att läsa kompislista från \"%s\"\n" | ||
5142 | |||
5143 | #: src/namestore/gnunet-namestore-fcfsd.c:770 | ||
5144 | msgid "Domain name must not contain `.'\n" | ||
5145 | msgstr "" | ||
5146 | |||
5147 | #: src/namestore/gnunet-namestore-fcfsd.c:778 | ||
5148 | msgid "Domain name must not contain `+'\n" | ||
5149 | msgstr "" | ||
5150 | |||
5151 | #: src/namestore/gnunet-namestore-fcfsd.c:974 | ||
5152 | msgid "No ego configured for `fcfsd` subsystem\n" | ||
5153 | msgstr "" | ||
5154 | |||
5155 | #: src/namestore/gnunet-namestore-fcfsd.c:1000 | ||
5156 | #, fuzzy | ||
5157 | msgid "Failed to start HTTP server\n" | ||
5158 | msgstr "Misslyckades att starta samling.\n" | ||
5159 | |||
5160 | #: src/namestore/gnunet-namestore-fcfsd.c:1042 | ||
5161 | #, fuzzy | ||
5162 | msgid "Failed to connect to identity\n" | ||
5163 | msgstr "Misslyckades att ansluta till gnunetd.\n" | ||
5164 | |||
5165 | #: src/namestore/gnunet-namestore-fcfsd.c:1074 | ||
5166 | msgid "GNU Name System First Come First Serve name registration service" | ||
5167 | msgstr "" | ||
5168 | |||
5169 | #: src/namestore/gnunet-namestore.c:301 | 4964 | #: src/namestore/gnunet-namestore.c:301 |
5170 | #, fuzzy, c-format | 4965 | #, fuzzy, c-format |
5171 | msgid "Adding record failed: %s\n" | 4966 | msgid "Adding record failed: %s\n" |
@@ -5174,7 +4969,7 @@ msgstr "" | |||
5174 | "Fel vid uppladdning av fil: %s\n" | 4969 | "Fel vid uppladdning av fil: %s\n" |
5175 | 4970 | ||
5176 | #: src/namestore/gnunet-namestore.c:330 | 4971 | #: src/namestore/gnunet-namestore.c:330 |
5177 | #: src/namestore/plugin_rest_namestore.c:567 | 4972 | #: src/namestore/plugin_rest_namestore.c:562 |
5178 | #, fuzzy, c-format | 4973 | #, fuzzy, c-format |
5179 | msgid "Deleting record failed, record does not exist%s%s\n" | 4974 | msgid "Deleting record failed, record does not exist%s%s\n" |
5180 | msgstr "" | 4975 | msgstr "" |
@@ -5182,7 +4977,7 @@ msgstr "" | |||
5182 | "Fel vid uppladdning av fil: %s\n" | 4977 | "Fel vid uppladdning av fil: %s\n" |
5183 | 4978 | ||
5184 | #: src/namestore/gnunet-namestore.c:337 | 4979 | #: src/namestore/gnunet-namestore.c:337 |
5185 | #: src/namestore/plugin_rest_namestore.c:576 | 4980 | #: src/namestore/plugin_rest_namestore.c:571 |
5186 | #, fuzzy, c-format | 4981 | #, fuzzy, c-format |
5187 | msgid "Deleting record failed%s%s\n" | 4982 | msgid "Deleting record failed%s%s\n" |
5188 | msgstr "" | 4983 | msgstr "" |
@@ -5202,7 +4997,7 @@ msgid "Records already exist under `%s', cannot add `%s' record.\n" | |||
5202 | msgstr "" | 4997 | msgstr "" |
5203 | 4998 | ||
5204 | #: src/namestore/gnunet-namestore.c:698 | 4999 | #: src/namestore/gnunet-namestore.c:698 |
5205 | #: src/namestore/plugin_rest_namestore.c:602 | 5000 | #: src/namestore/plugin_rest_namestore.c:597 |
5206 | #, c-format | 5001 | #, c-format |
5207 | msgid "There are no records under label `%s' that could be deleted.\n" | 5002 | msgid "There are no records under label `%s' that could be deleted.\n" |
5208 | msgstr "" | 5003 | msgstr "" |
@@ -5213,11 +5008,24 @@ msgid "" | |||
5213 | "There are no records under label `%s' that match the request for deletion.\n" | 5008 | "There are no records under label `%s' that match the request for deletion.\n" |
5214 | msgstr "" | 5009 | msgstr "" |
5215 | 5010 | ||
5011 | #: src/namestore/gnunet-namestore.c:776 | ||
5012 | #: src/namestore/plugin_rest_namestore.c:1004 | ||
5013 | #, fuzzy, c-format | ||
5014 | msgid "Ego `%s' not known to identity service\n" | ||
5015 | msgstr "\"%s\": okänd tjänst: %s\n" | ||
5016 | |||
5216 | #: src/namestore/gnunet-namestore.c:791 | 5017 | #: src/namestore/gnunet-namestore.c:791 |
5217 | #, c-format | 5018 | #, c-format |
5218 | msgid "No options given\n" | 5019 | msgid "No options given\n" |
5219 | msgstr "" | 5020 | msgstr "" |
5220 | 5021 | ||
5022 | #: src/namestore/gnunet-namestore.c:802 | ||
5023 | #: src/namestore/gnunet-namestore-fcfsd.c:1034 | ||
5024 | #: src/namestore/plugin_rest_namestore.c:1017 | ||
5025 | #, fuzzy | ||
5026 | msgid "Failed to connect to namestore\n" | ||
5027 | msgstr "Misslyckades att ansluta till gnunetd.\n" | ||
5028 | |||
5221 | #: src/namestore/gnunet-namestore.c:810 src/namestore/gnunet-namestore.c:819 | 5029 | #: src/namestore/gnunet-namestore.c:810 src/namestore/gnunet-namestore.c:819 |
5222 | #: src/namestore/gnunet-namestore.c:838 src/namestore/gnunet-namestore.c:861 | 5030 | #: src/namestore/gnunet-namestore.c:838 src/namestore/gnunet-namestore.c:861 |
5223 | #: src/namestore/gnunet-namestore.c:915 | 5031 | #: src/namestore/gnunet-namestore.c:915 |
@@ -5231,14 +5039,14 @@ msgid "add" | |||
5231 | msgstr "" | 5039 | msgstr "" |
5232 | 5040 | ||
5233 | #: src/namestore/gnunet-namestore.c:829 | 5041 | #: src/namestore/gnunet-namestore.c:829 |
5234 | #: src/namestore/plugin_rest_namestore.c:676 | 5042 | #: src/namestore/plugin_rest_namestore.c:671 |
5235 | #, fuzzy, c-format | 5043 | #, fuzzy, c-format |
5236 | msgid "Unsupported type `%s'\n" | 5044 | msgid "Unsupported type `%s'\n" |
5237 | msgstr "Kommando \"%s\" stöds ej. Avbryter.\n" | 5045 | msgstr "Kommando \"%s\" stöds ej. Avbryter.\n" |
5238 | 5046 | ||
5239 | #: src/namestore/gnunet-namestore.c:851 | 5047 | #: src/namestore/gnunet-namestore.c:851 |
5240 | #: src/namestore/plugin_rest_namestore.c:694 | 5048 | #: src/namestore/plugin_rest_namestore.c:689 |
5241 | #: src/namestore/plugin_rest_namestore.c:734 | 5049 | #: src/namestore/plugin_rest_namestore.c:729 |
5242 | #, fuzzy, c-format | 5050 | #, fuzzy, c-format |
5243 | msgid "Value `%s' invalid for record type `%s'\n" | 5051 | msgid "Value `%s' invalid for record type `%s'\n" |
5244 | msgstr "%s: symbolvärde \"%s\" ogiltigt för %s\n" | 5052 | msgstr "%s: symbolvärde \"%s\" ogiltigt för %s\n" |
@@ -5268,13 +5076,13 @@ msgid "Invalid nick `%s'\n" | |||
5268 | msgstr "Ogiltiga argument: " | 5076 | msgstr "Ogiltiga argument: " |
5269 | 5077 | ||
5270 | #: src/namestore/gnunet-namestore.c:1051 | 5078 | #: src/namestore/gnunet-namestore.c:1051 |
5271 | #: src/namestore/plugin_rest_namestore.c:1052 | 5079 | #: src/namestore/plugin_rest_namestore.c:1047 |
5272 | #, fuzzy, c-format | 5080 | #, fuzzy, c-format |
5273 | msgid "No default ego configured in identity service\n" | 5081 | msgid "No default ego configured in identity service\n" |
5274 | msgstr "\"%s\": okänd tjänst: %s\n" | 5082 | msgstr "\"%s\": okänd tjänst: %s\n" |
5275 | 5083 | ||
5276 | #: src/namestore/gnunet-namestore.c:1108 | 5084 | #: src/namestore/gnunet-namestore.c:1108 |
5277 | #: src/namestore/plugin_rest_namestore.c:1148 | 5085 | #: src/namestore/plugin_rest_namestore.c:1143 |
5278 | #, fuzzy, c-format | 5086 | #, fuzzy, c-format |
5279 | msgid "Cannot connect to identity service\n" | 5087 | msgid "Cannot connect to identity service\n" |
5280 | msgstr "Kunde inte ansluta till gnunetd.\n" | 5088 | msgstr "Kunde inte ansluta till gnunetd.\n" |
@@ -5338,6 +5146,66 @@ msgstr "" | |||
5338 | msgid "name of the ego controlling the zone" | 5146 | msgid "name of the ego controlling the zone" |
5339 | msgstr "Visa värde av alternativet" | 5147 | msgstr "Visa värde av alternativet" |
5340 | 5148 | ||
5149 | #: src/namestore/gnunet-namestore-fcfsd.c:508 | ||
5150 | #, fuzzy, c-format | ||
5151 | msgid "Unsupported form value `%s'\n" | ||
5152 | msgstr "Kommando \"%s\" stöds ej. Avbryter.\n" | ||
5153 | |||
5154 | #: src/namestore/gnunet-namestore-fcfsd.c:535 | ||
5155 | #, fuzzy, c-format | ||
5156 | msgid "Failed to create record for domain `%s': %s\n" | ||
5157 | msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n" | ||
5158 | |||
5159 | #: src/namestore/gnunet-namestore-fcfsd.c:555 | ||
5160 | msgid "Error when mapping zone to name\n" | ||
5161 | msgstr "" | ||
5162 | |||
5163 | #: src/namestore/gnunet-namestore-fcfsd.c:585 | ||
5164 | #, c-format | ||
5165 | msgid "Found existing name `%s' for the given key\n" | ||
5166 | msgstr "" | ||
5167 | |||
5168 | #: src/namestore/gnunet-namestore-fcfsd.c:662 | ||
5169 | #, c-format | ||
5170 | msgid "Found %u existing records for domain `%s'\n" | ||
5171 | msgstr "" | ||
5172 | |||
5173 | #: src/namestore/gnunet-namestore-fcfsd.c:718 | ||
5174 | #, fuzzy, c-format | ||
5175 | msgid "Failed to create page for `%s'\n" | ||
5176 | msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n" | ||
5177 | |||
5178 | #: src/namestore/gnunet-namestore-fcfsd.c:734 | ||
5179 | #, fuzzy, c-format | ||
5180 | msgid "Failed to setup post processor for `%s'\n" | ||
5181 | msgstr "Misslyckades att läsa kompislista från \"%s\"\n" | ||
5182 | |||
5183 | #: src/namestore/gnunet-namestore-fcfsd.c:770 | ||
5184 | msgid "Domain name must not contain `.'\n" | ||
5185 | msgstr "" | ||
5186 | |||
5187 | #: src/namestore/gnunet-namestore-fcfsd.c:778 | ||
5188 | msgid "Domain name must not contain `+'\n" | ||
5189 | msgstr "" | ||
5190 | |||
5191 | #: src/namestore/gnunet-namestore-fcfsd.c:974 | ||
5192 | msgid "No ego configured for `fcfsd` subsystem\n" | ||
5193 | msgstr "" | ||
5194 | |||
5195 | #: src/namestore/gnunet-namestore-fcfsd.c:1000 | ||
5196 | #, fuzzy | ||
5197 | msgid "Failed to start HTTP server\n" | ||
5198 | msgstr "Misslyckades att starta samling.\n" | ||
5199 | |||
5200 | #: src/namestore/gnunet-namestore-fcfsd.c:1042 | ||
5201 | #, fuzzy | ||
5202 | msgid "Failed to connect to identity\n" | ||
5203 | msgstr "Misslyckades att ansluta till gnunetd.\n" | ||
5204 | |||
5205 | #: src/namestore/gnunet-namestore-fcfsd.c:1074 | ||
5206 | msgid "GNU Name System First Come First Serve name registration service" | ||
5207 | msgstr "" | ||
5208 | |||
5341 | #: src/namestore/gnunet-service-namestore.c:615 | 5209 | #: src/namestore/gnunet-service-namestore.c:615 |
5342 | #, fuzzy, c-format | 5210 | #, fuzzy, c-format |
5343 | msgid "Failed to replicate block in namecache: %s\n" | 5211 | msgid "Failed to replicate block in namecache: %s\n" |
@@ -5351,7 +5219,7 @@ msgstr "" | |||
5351 | msgid "flat file database running\n" | 5219 | msgid "flat file database running\n" |
5352 | msgstr "" | 5220 | msgstr "" |
5353 | 5221 | ||
5354 | #: src/namestore/plugin_rest_namestore.c:1193 | 5222 | #: src/namestore/plugin_rest_namestore.c:1188 |
5355 | #, fuzzy | 5223 | #, fuzzy |
5356 | msgid "Namestore REST API initialized\n" | 5224 | msgid "Namestore REST API initialized\n" |
5357 | msgstr " Anslutning misslyckades\n" | 5225 | msgstr " Anslutning misslyckades\n" |
@@ -5642,6 +5510,11 @@ msgstr "" | |||
5642 | msgid "`upnpc' command not found\n" | 5510 | msgid "`upnpc' command not found\n" |
5643 | msgstr "" | 5511 | msgstr "" |
5644 | 5512 | ||
5513 | #: src/nse/gnunet-nse.c:122 | ||
5514 | #, fuzzy | ||
5515 | msgid "Show network size estimates from NSE service." | ||
5516 | msgstr "# byte mottogs via TCP" | ||
5517 | |||
5645 | #: src/nse/gnunet-nse-profiler.c:842 | 5518 | #: src/nse/gnunet-nse-profiler.c:842 |
5646 | #, fuzzy | 5519 | #, fuzzy |
5647 | msgid "limit to the number of connections to NSE services, 0 for none" | 5520 | msgid "limit to the number of connections to NSE services, 0 for none" |
@@ -5668,16 +5541,66 @@ msgstr "" | |||
5668 | msgid "Measure quality and performance of the NSE service." | 5541 | msgid "Measure quality and performance of the NSE service." |
5669 | msgstr "Kan inte tillgå tjänsten" | 5542 | msgstr "Kan inte tillgå tjänsten" |
5670 | 5543 | ||
5671 | #: src/nse/gnunet-nse.c:122 | ||
5672 | #, fuzzy | ||
5673 | msgid "Show network size estimates from NSE service." | ||
5674 | msgstr "# byte mottogs via TCP" | ||
5675 | |||
5676 | #: src/nse/gnunet-service-nse.c:1534 | 5544 | #: src/nse/gnunet-service-nse.c:1534 |
5677 | #: src/revocation/gnunet-service-revocation.c:838 src/util/gnunet-scrypt.c:276 | 5545 | #: src/revocation/gnunet-service-revocation.c:840 src/util/gnunet-scrypt.c:276 |
5678 | msgid "Value is too large.\n" | 5546 | msgid "Value is too large.\n" |
5679 | msgstr "" | 5547 | msgstr "" |
5680 | 5548 | ||
5549 | #: src/peerinfo/gnunet-service-peerinfo.c:178 | ||
5550 | #, fuzzy, c-format | ||
5551 | msgid "Removing expired address of transport `%s'\n" | ||
5552 | msgstr "Tillgängliga transport(er): %s\n" | ||
5553 | |||
5554 | #: src/peerinfo/gnunet-service-peerinfo.c:310 | ||
5555 | #, fuzzy, c-format | ||
5556 | msgid "Failed to parse HELLO in file `%s': %s\n" | ||
5557 | msgstr "Misslyckades att läsa kompislista från \"%s\"\n" | ||
5558 | |||
5559 | #: src/peerinfo/gnunet-service-peerinfo.c:331 | ||
5560 | #: src/peerinfo/gnunet-service-peerinfo.c:362 | ||
5561 | #, fuzzy, c-format | ||
5562 | msgid "Failed to parse HELLO in file `%s'\n" | ||
5563 | msgstr "Misslyckades att läsa kompislista från \"%s\"\n" | ||
5564 | |||
5565 | #: src/peerinfo/gnunet-service-peerinfo.c:446 | ||
5566 | msgid "# peers known" | ||
5567 | msgstr "" | ||
5568 | |||
5569 | #: src/peerinfo/gnunet-service-peerinfo.c:489 | ||
5570 | #, c-format | ||
5571 | msgid "" | ||
5572 | "File `%s' in directory `%s' does not match naming convention. Removed.\n" | ||
5573 | msgstr "" | ||
5574 | |||
5575 | #: src/peerinfo/gnunet-service-peerinfo.c:655 | ||
5576 | #, fuzzy, c-format | ||
5577 | msgid "Scanning directory `%s'\n" | ||
5578 | msgstr "Misslyckades att läsa kompislista från \"%s\"\n" | ||
5579 | |||
5580 | #: src/peerinfo/gnunet-service-peerinfo.c:663 | ||
5581 | #, c-format | ||
5582 | msgid "Still no peers found in `%s'!\n" | ||
5583 | msgstr "" | ||
5584 | |||
5585 | #: src/peerinfo/gnunet-service-peerinfo.c:1080 | ||
5586 | #, fuzzy, c-format | ||
5587 | msgid "Cleaning up directory `%s'\n" | ||
5588 | msgstr "Misslyckades att läsa kompislista från \"%s\"\n" | ||
5589 | |||
5590 | #: src/peerinfo/gnunet-service-peerinfo.c:1409 | ||
5591 | #, c-format | ||
5592 | msgid "Importing HELLOs from `%s'\n" | ||
5593 | msgstr "" | ||
5594 | |||
5595 | #: src/peerinfo/gnunet-service-peerinfo.c:1422 | ||
5596 | msgid "Skipping import of included HELLOs\n" | ||
5597 | msgstr "" | ||
5598 | |||
5599 | #: src/peerinfo/peerinfo_api.c:220 | ||
5600 | #, fuzzy | ||
5601 | msgid "Failed to receive response from `PEERINFO' service." | ||
5602 | msgstr "Misslyckades att ta emot svar till \"%s\" meddelande från gnunetd\n" | ||
5603 | |||
5681 | #: src/peerinfo-tool/gnunet-peerinfo.c:239 | 5604 | #: src/peerinfo-tool/gnunet-peerinfo.c:239 |
5682 | #, fuzzy, c-format | 5605 | #, fuzzy, c-format |
5683 | msgid "%sPeer `%s'\n" | 5606 | msgid "%sPeer `%s'\n" |
@@ -5768,61 +5691,6 @@ msgstr "Testar transport(er) %s\n" | |||
5768 | msgid "Failed to load transport plugin for `%s'\n" | 5691 | msgid "Failed to load transport plugin for `%s'\n" |
5769 | msgstr "Kunde inte slå upp \"%s\": %s\n" | 5692 | msgstr "Kunde inte slå upp \"%s\": %s\n" |
5770 | 5693 | ||
5771 | #: src/peerinfo/gnunet-service-peerinfo.c:178 | ||
5772 | #, fuzzy, c-format | ||
5773 | msgid "Removing expired address of transport `%s'\n" | ||
5774 | msgstr "Tillgängliga transport(er): %s\n" | ||
5775 | |||
5776 | #: src/peerinfo/gnunet-service-peerinfo.c:310 | ||
5777 | #, fuzzy, c-format | ||
5778 | msgid "Failed to parse HELLO in file `%s': %s\n" | ||
5779 | msgstr "Misslyckades att läsa kompislista från \"%s\"\n" | ||
5780 | |||
5781 | #: src/peerinfo/gnunet-service-peerinfo.c:331 | ||
5782 | #: src/peerinfo/gnunet-service-peerinfo.c:362 | ||
5783 | #, fuzzy, c-format | ||
5784 | msgid "Failed to parse HELLO in file `%s'\n" | ||
5785 | msgstr "Misslyckades att läsa kompislista från \"%s\"\n" | ||
5786 | |||
5787 | #: src/peerinfo/gnunet-service-peerinfo.c:446 | ||
5788 | msgid "# peers known" | ||
5789 | msgstr "" | ||
5790 | |||
5791 | #: src/peerinfo/gnunet-service-peerinfo.c:489 | ||
5792 | #, c-format | ||
5793 | msgid "" | ||
5794 | "File `%s' in directory `%s' does not match naming convention. Removed.\n" | ||
5795 | msgstr "" | ||
5796 | |||
5797 | #: src/peerinfo/gnunet-service-peerinfo.c:655 | ||
5798 | #, fuzzy, c-format | ||
5799 | msgid "Scanning directory `%s'\n" | ||
5800 | msgstr "Misslyckades att läsa kompislista från \"%s\"\n" | ||
5801 | |||
5802 | #: src/peerinfo/gnunet-service-peerinfo.c:663 | ||
5803 | #, c-format | ||
5804 | msgid "Still no peers found in `%s'!\n" | ||
5805 | msgstr "" | ||
5806 | |||
5807 | #: src/peerinfo/gnunet-service-peerinfo.c:1076 | ||
5808 | #, fuzzy, c-format | ||
5809 | msgid "Cleaning up directory `%s'\n" | ||
5810 | msgstr "Misslyckades att läsa kompislista från \"%s\"\n" | ||
5811 | |||
5812 | #: src/peerinfo/gnunet-service-peerinfo.c:1405 | ||
5813 | #, c-format | ||
5814 | msgid "Importing HELLOs from `%s'\n" | ||
5815 | msgstr "" | ||
5816 | |||
5817 | #: src/peerinfo/gnunet-service-peerinfo.c:1418 | ||
5818 | msgid "Skipping import of included HELLOs\n" | ||
5819 | msgstr "" | ||
5820 | |||
5821 | #: src/peerinfo/peerinfo_api.c:220 | ||
5822 | #, fuzzy | ||
5823 | msgid "Failed to receive response from `PEERINFO' service." | ||
5824 | msgstr "Misslyckades att ta emot svar till \"%s\" meddelande från gnunetd\n" | ||
5825 | |||
5826 | #: src/peerstore/gnunet-peerstore.c:91 | 5694 | #: src/peerstore/gnunet-peerstore.c:91 |
5827 | msgid "peerstore" | 5695 | msgid "peerstore" |
5828 | msgstr "" | 5696 | msgstr "" |
@@ -6274,12 +6142,12 @@ msgstr "# sessionsnycklar accepterade" | |||
6274 | msgid "# revocation set unions completed" | 6142 | msgid "# revocation set unions completed" |
6275 | msgstr "# klartext PONG-meddelanden mottagna" | 6143 | msgstr "# klartext PONG-meddelanden mottagna" |
6276 | 6144 | ||
6277 | #: src/revocation/gnunet-service-revocation.c:524 | 6145 | #: src/revocation/gnunet-service-revocation.c:525 |
6278 | #: src/revocation/gnunet-service-revocation.c:771 | 6146 | #: src/revocation/gnunet-service-revocation.c:773 |
6279 | msgid "SET service crashed, terminating revocation service\n" | 6147 | msgid "SET service crashed, terminating revocation service\n" |
6280 | msgstr "" | 6148 | msgstr "" |
6281 | 6149 | ||
6282 | #: src/revocation/gnunet-service-revocation.c:862 | 6150 | #: src/revocation/gnunet-service-revocation.c:864 |
6283 | #, fuzzy | 6151 | #, fuzzy |
6284 | msgid "Could not open revocation database file!" | 6152 | msgid "Could not open revocation database file!" |
6285 | msgstr "Kunde inte ansluta till gnunetd.\n" | 6153 | msgstr "Kunde inte ansluta till gnunetd.\n" |
@@ -6343,10 +6211,10 @@ msgstr "" | |||
6343 | msgid "Calculate the Vectorproduct with a GNUnet peer." | 6211 | msgid "Calculate the Vectorproduct with a GNUnet peer." |
6344 | msgstr "" | 6212 | msgstr "" |
6345 | 6213 | ||
6346 | #: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1172 | ||
6347 | #: src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c:1063 | ||
6348 | #: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1401 | 6214 | #: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1401 |
6349 | #: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1345 | 6215 | #: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1345 |
6216 | #: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1172 | ||
6217 | #: src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c:1063 | ||
6350 | #, fuzzy | 6218 | #, fuzzy |
6351 | msgid "Connect to CADET failed\n" | 6219 | msgid "Connect to CADET failed\n" |
6352 | msgstr " Anslutning misslyckades (fel?)\n" | 6220 | msgstr " Anslutning misslyckades (fel?)\n" |
@@ -6565,7 +6433,7 @@ msgstr "\"%s\" misslyckades för fil \"%s\" vid %s:%d med fel: %s\n" | |||
6565 | msgid "Wrote %llu bytes of statistics to `%s'\n" | 6433 | msgid "Wrote %llu bytes of statistics to `%s'\n" |
6566 | msgstr "Ladda ner filer från GNUnet." | 6434 | msgstr "Ladda ner filer från GNUnet." |
6567 | 6435 | ||
6568 | #: src/statistics/gnunet-service-statistics.c:1084 | 6436 | #: src/statistics/gnunet-service-statistics.c:1086 |
6569 | #, fuzzy, c-format | 6437 | #, fuzzy, c-format |
6570 | msgid "Loading %llu bytes of statistics from `%s'\n" | 6438 | msgid "Loading %llu bytes of statistics from `%s'\n" |
6571 | msgstr "Ladda ner filer från GNUnet." | 6439 | msgstr "Ladda ner filer från GNUnet." |
@@ -6694,7 +6562,7 @@ msgid "Invalid argument `%s'; expecting unsigned int\n" | |||
6694 | msgstr "Ogiltigt argument: \"%s\"\n" | 6562 | msgstr "Ogiltigt argument: \"%s\"\n" |
6695 | 6563 | ||
6696 | #: src/testbed/generate-underlay-topology.c:342 | 6564 | #: src/testbed/generate-underlay-topology.c:342 |
6697 | #: src/testbed/gnunet-testbed-profiler.c:284 | 6565 | #: src/testbed/gnunet-testbed-profiler.c:283 |
6698 | msgid "create COUNT number of peers" | 6566 | msgid "create COUNT number of peers" |
6699 | msgstr "" | 6567 | msgstr "" |
6700 | 6568 | ||
@@ -6732,13 +6600,13 @@ msgid "" | |||
6732 | "deployments" | 6600 | "deployments" |
6733 | msgstr "" | 6601 | msgstr "" |
6734 | 6602 | ||
6735 | #: src/testbed/gnunet-daemon-testbed-underlay.c:231 src/testing/list-keys.c:46 | 6603 | #: src/testbed/gnunet-daemon-testbed-underlay.c:233 src/testing/list-keys.c:46 |
6736 | #: src/testing/testing.c:288 src/util/gnunet-ecc.c:301 | 6604 | #: src/testing/testing.c:288 src/util/gnunet-ecc.c:306 |
6737 | #, c-format | 6605 | #, c-format |
6738 | msgid "Incorrect hostkey file format: %s\n" | 6606 | msgid "Incorrect hostkey file format: %s\n" |
6739 | msgstr "" | 6607 | msgstr "" |
6740 | 6608 | ||
6741 | #: src/testbed/gnunet-daemon-testbed-underlay.c:469 | 6609 | #: src/testbed/gnunet-daemon-testbed-underlay.c:471 |
6742 | msgid "Daemon to restrict underlay network in testbed deployments" | 6610 | msgid "Daemon to restrict underlay network in testbed deployments" |
6743 | msgstr "" | 6611 | msgstr "" |
6744 | 6612 | ||
@@ -6803,17 +6671,6 @@ msgstr "" | |||
6803 | msgid "%.s Unknown result code." | 6671 | msgid "%.s Unknown result code." |
6804 | msgstr "" | 6672 | msgstr "" |
6805 | 6673 | ||
6806 | #: src/testbed/gnunet-testbed-profiler.c:290 | ||
6807 | msgid "tolerate COUNT number of continious timeout failures" | ||
6808 | msgstr "" | ||
6809 | |||
6810 | #: src/testbed/gnunet-testbed-profiler.c:295 | ||
6811 | msgid "" | ||
6812 | "run profiler in non-interactive mode where upon testbed setup the profiler " | ||
6813 | "does not wait for a keystroke but continues to run until a termination " | ||
6814 | "signal is received" | ||
6815 | msgstr "" | ||
6816 | |||
6817 | #: src/testbed/gnunet_testbed_mpi_spawn.c:118 | 6674 | #: src/testbed/gnunet_testbed_mpi_spawn.c:118 |
6818 | #, fuzzy | 6675 | #, fuzzy |
6819 | msgid "Waiting for child to exit.\n" | 6676 | msgid "Waiting for child to exit.\n" |
@@ -6824,6 +6681,17 @@ msgstr "Väntar på att motparter ska ansluta (%u iterationer kvar)...\n" | |||
6824 | msgid "Spawning process `%s'\n" | 6681 | msgid "Spawning process `%s'\n" |
6825 | msgstr "Startade samling \"%s\".\n" | 6682 | msgstr "Startade samling \"%s\".\n" |
6826 | 6683 | ||
6684 | #: src/testbed/gnunet-testbed-profiler.c:289 | ||
6685 | msgid "tolerate COUNT number of continious timeout failures" | ||
6686 | msgstr "" | ||
6687 | |||
6688 | #: src/testbed/gnunet-testbed-profiler.c:294 | ||
6689 | msgid "" | ||
6690 | "run profiler in non-interactive mode where upon testbed setup the profiler " | ||
6691 | "does not wait for a keystroke but continues to run until a termination " | ||
6692 | "signal is received" | ||
6693 | msgstr "" | ||
6694 | |||
6827 | #: src/testbed/testbed_api.c:410 | 6695 | #: src/testbed/testbed_api.c:410 |
6828 | #, fuzzy, c-format | 6696 | #, fuzzy, c-format |
6829 | msgid "Adding host %u failed with error: %s\n" | 6697 | msgid "Adding host %u failed with error: %s\n" |
@@ -7120,58 +6988,58 @@ msgstr "# krypterade PONG-meddelanden mottagna" | |||
7120 | msgid "GNUnet topology control" | 6988 | msgid "GNUnet topology control" |
7121 | msgstr "" | 6989 | msgstr "" |
7122 | 6990 | ||
6991 | #: src/transport/gnunet-service-transport_ats.c:141 | ||
6992 | msgid "# Addresses given to ATS" | ||
6993 | msgstr "" | ||
6994 | |||
7123 | #: src/transport/gnunet-service-transport.c:448 | 6995 | #: src/transport/gnunet-service-transport.c:448 |
7124 | msgid "# messages dropped due to slow client" | 6996 | msgid "# messages dropped due to slow client" |
7125 | msgstr "" | 6997 | msgstr "" |
7126 | 6998 | ||
7127 | #: src/transport/gnunet-service-transport.c:809 | 6999 | #: src/transport/gnunet-service-transport.c:818 |
7128 | msgid "# bytes payload dropped (other peer was not connected)" | 7000 | msgid "# bytes payload dropped (other peer was not connected)" |
7129 | msgstr "" | 7001 | msgstr "" |
7130 | 7002 | ||
7131 | #: src/transport/gnunet-service-transport.c:1539 | 7003 | #: src/transport/gnunet-service-transport.c:1551 |
7132 | #, fuzzy | 7004 | #, fuzzy |
7133 | msgid "# bytes payload discarded due to not connected peer" | 7005 | msgid "# bytes payload discarded due to not connected peer" |
7134 | msgstr "Nätverksannonsering avstängd i konfigurationen!\n" | 7006 | msgstr "Nätverksannonsering avstängd i konfigurationen!\n" |
7135 | 7007 | ||
7136 | #: src/transport/gnunet-service-transport.c:1699 | 7008 | #: src/transport/gnunet-service-transport.c:1711 |
7137 | #, fuzzy | 7009 | #, fuzzy |
7138 | msgid "# bytes total received" | 7010 | msgid "# bytes total received" |
7139 | msgstr "# byte krypterade" | 7011 | msgstr "# byte krypterade" |
7140 | 7012 | ||
7141 | #: src/transport/gnunet-service-transport.c:1796 | 7013 | #: src/transport/gnunet-service-transport.c:1808 |
7142 | #, fuzzy | 7014 | #, fuzzy |
7143 | msgid "# bytes payload received" | 7015 | msgid "# bytes payload received" |
7144 | msgstr "# byte dekrypterade" | 7016 | msgstr "# byte dekrypterade" |
7145 | 7017 | ||
7146 | #: src/transport/gnunet-service-transport.c:2113 | 7018 | #: src/transport/gnunet-service-transport.c:2125 |
7147 | #: src/transport/gnunet-service-transport.c:2585 | 7019 | #: src/transport/gnunet-service-transport.c:2597 |
7148 | msgid "# disconnects due to blacklist" | 7020 | msgid "# disconnects due to blacklist" |
7149 | msgstr "" | 7021 | msgstr "" |
7150 | 7022 | ||
7151 | #: src/transport/gnunet-service-transport.c:2589 | 7023 | #: src/transport/gnunet-service-transport.c:2601 |
7152 | #, fuzzy, c-format | 7024 | #, fuzzy, c-format |
7153 | msgid "Disallowing connection to peer `%s' on transport %s\n" | 7025 | msgid "Disallowing connection to peer `%s' on transport %s\n" |
7154 | msgstr "Kunde inte slå upp \"%s\": %s\n" | 7026 | msgstr "Kunde inte slå upp \"%s\": %s\n" |
7155 | 7027 | ||
7156 | #: src/transport/gnunet-service-transport.c:2697 | 7028 | #: src/transport/gnunet-service-transport.c:2709 |
7157 | #, fuzzy, c-format | 7029 | #, fuzzy, c-format |
7158 | msgid "Adding blacklisting entry for peer `%s'\n" | 7030 | msgid "Adding blacklisting entry for peer `%s'\n" |
7159 | msgstr "Motpart \"%s\" med pålitlighet %8u och adress \"%s\"\n" | 7031 | msgstr "Motpart \"%s\" med pålitlighet %8u och adress \"%s\"\n" |
7160 | 7032 | ||
7161 | #: src/transport/gnunet-service-transport.c:2706 | 7033 | #: src/transport/gnunet-service-transport.c:2718 |
7162 | #, c-format | 7034 | #, c-format |
7163 | msgid "Adding blacklisting entry for peer `%s':`%s'\n" | 7035 | msgid "Adding blacklisting entry for peer `%s':`%s'\n" |
7164 | msgstr "" | 7036 | msgstr "" |
7165 | 7037 | ||
7166 | #: src/transport/gnunet-service-transport.c:2771 | 7038 | #: src/transport/gnunet-service-transport.c:2783 |
7167 | #, fuzzy | 7039 | #, fuzzy |
7168 | msgid "Transport service is lacking key configuration settings. Exiting.\n" | 7040 | msgid "Transport service is lacking key configuration settings. Exiting.\n" |
7169 | msgstr "GNUnet-konfiguration" | 7041 | msgstr "GNUnet-konfiguration" |
7170 | 7042 | ||
7171 | #: src/transport/gnunet-service-transport_ats.c:141 | ||
7172 | msgid "# Addresses given to ATS" | ||
7173 | msgstr "" | ||
7174 | |||
7175 | #: src/transport/gnunet-service-transport_hello.c:195 | 7043 | #: src/transport/gnunet-service-transport_hello.c:195 |
7176 | msgid "# refreshed my HELLO" | 7044 | msgid "# refreshed my HELLO" |
7177 | msgstr "" | 7045 | msgstr "" |
@@ -7320,74 +7188,74 @@ msgstr "# PING-meddelanden skapade" | |||
7320 | msgid "SYN request from peer `%s' ignored due impending shutdown\n" | 7188 | msgid "SYN request from peer `%s' ignored due impending shutdown\n" |
7321 | msgstr "" | 7189 | msgstr "" |
7322 | 7190 | ||
7323 | #: src/transport/gnunet-service-transport_neighbours.c:2620 | 7191 | #: src/transport/gnunet-service-transport_neighbours.c:2623 |
7324 | msgid "# Attempts to switch addresses" | 7192 | msgid "# Attempts to switch addresses" |
7325 | msgstr "" | 7193 | msgstr "" |
7326 | 7194 | ||
7327 | #: src/transport/gnunet-service-transport_neighbours.c:3102 | 7195 | #: src/transport/gnunet-service-transport_neighbours.c:3105 |
7328 | #, fuzzy | 7196 | #, fuzzy |
7329 | msgid "# SYN_ACK messages received" | 7197 | msgid "# SYN_ACK messages received" |
7330 | msgstr "# krypterade PONG-meddelanden mottagna" | 7198 | msgstr "# krypterade PONG-meddelanden mottagna" |
7331 | 7199 | ||
7332 | #: src/transport/gnunet-service-transport_neighbours.c:3110 | 7200 | #: src/transport/gnunet-service-transport_neighbours.c:3113 |
7333 | #, fuzzy | 7201 | #, fuzzy |
7334 | msgid "# unexpected SYN_ACK messages (no peer)" | 7202 | msgid "# unexpected SYN_ACK messages (no peer)" |
7335 | msgstr "skicka ANTAL meddelanden" | 7203 | msgstr "skicka ANTAL meddelanden" |
7336 | 7204 | ||
7337 | #: src/transport/gnunet-service-transport_neighbours.c:3128 | 7205 | #: src/transport/gnunet-service-transport_neighbours.c:3131 |
7338 | #: src/transport/gnunet-service-transport_neighbours.c:3152 | 7206 | #: src/transport/gnunet-service-transport_neighbours.c:3155 |
7339 | #, fuzzy | 7207 | #, fuzzy |
7340 | msgid "# unexpected SYN_ACK messages (not ready)" | 7208 | msgid "# unexpected SYN_ACK messages (not ready)" |
7341 | msgstr "skicka ANTAL meddelanden" | 7209 | msgstr "skicka ANTAL meddelanden" |
7342 | 7210 | ||
7343 | #: src/transport/gnunet-service-transport_neighbours.c:3164 | 7211 | #: src/transport/gnunet-service-transport_neighbours.c:3167 |
7344 | #, fuzzy | 7212 | #, fuzzy |
7345 | msgid "# unexpected SYN_ACK messages (waiting on ATS)" | 7213 | msgid "# unexpected SYN_ACK messages (waiting on ATS)" |
7346 | msgstr "skicka ANTAL meddelanden" | 7214 | msgstr "skicka ANTAL meddelanden" |
7347 | 7215 | ||
7348 | #: src/transport/gnunet-service-transport_neighbours.c:3189 | 7216 | #: src/transport/gnunet-service-transport_neighbours.c:3192 |
7349 | msgid "# Successful attempts to switch addresses" | 7217 | msgid "# Successful attempts to switch addresses" |
7350 | msgstr "" | 7218 | msgstr "" |
7351 | 7219 | ||
7352 | #: src/transport/gnunet-service-transport_neighbours.c:3202 | 7220 | #: src/transport/gnunet-service-transport_neighbours.c:3205 |
7353 | #, fuzzy | 7221 | #, fuzzy |
7354 | msgid "# unexpected SYN_ACK messages (disconnecting)" | 7222 | msgid "# unexpected SYN_ACK messages (disconnecting)" |
7355 | msgstr "skicka ANTAL meddelanden" | 7223 | msgstr "skicka ANTAL meddelanden" |
7356 | 7224 | ||
7357 | #: src/transport/gnunet-service-transport_neighbours.c:3374 | 7225 | #: src/transport/gnunet-service-transport_neighbours.c:3377 |
7358 | #, fuzzy | 7226 | #, fuzzy |
7359 | msgid "# ACK messages received" | 7227 | msgid "# ACK messages received" |
7360 | msgstr "# krypterade PONG-meddelanden mottagna" | 7228 | msgstr "# krypterade PONG-meddelanden mottagna" |
7361 | 7229 | ||
7362 | #: src/transport/gnunet-service-transport_neighbours.c:3410 | 7230 | #: src/transport/gnunet-service-transport_neighbours.c:3413 |
7363 | #, fuzzy | 7231 | #, fuzzy |
7364 | msgid "# unexpected ACK messages" | 7232 | msgid "# unexpected ACK messages" |
7365 | msgstr "# krypterade PONG-meddelanden skickade" | 7233 | msgstr "# krypterade PONG-meddelanden skickade" |
7366 | 7234 | ||
7367 | #: src/transport/gnunet-service-transport_neighbours.c:3498 | 7235 | #: src/transport/gnunet-service-transport_neighbours.c:3501 |
7368 | #, fuzzy | 7236 | #, fuzzy |
7369 | msgid "# quota messages ignored (malformed)" | 7237 | msgid "# quota messages ignored (malformed)" |
7370 | msgstr "# byte mottogs via TCP" | 7238 | msgstr "# byte mottogs via TCP" |
7371 | 7239 | ||
7372 | #: src/transport/gnunet-service-transport_neighbours.c:3505 | 7240 | #: src/transport/gnunet-service-transport_neighbours.c:3508 |
7373 | #, fuzzy | 7241 | #, fuzzy |
7374 | msgid "# QUOTA messages received" | 7242 | msgid "# QUOTA messages received" |
7375 | msgstr "# krypterade PONG-meddelanden mottagna" | 7243 | msgstr "# krypterade PONG-meddelanden mottagna" |
7376 | 7244 | ||
7377 | #: src/transport/gnunet-service-transport_neighbours.c:3545 | 7245 | #: src/transport/gnunet-service-transport_neighbours.c:3548 |
7378 | msgid "# disconnect messages ignored (malformed)" | 7246 | msgid "# disconnect messages ignored (malformed)" |
7379 | msgstr "" | 7247 | msgstr "" |
7380 | 7248 | ||
7381 | #: src/transport/gnunet-service-transport_neighbours.c:3552 | 7249 | #: src/transport/gnunet-service-transport_neighbours.c:3555 |
7382 | #, fuzzy | 7250 | #, fuzzy |
7383 | msgid "# DISCONNECT messages received" | 7251 | msgid "# DISCONNECT messages received" |
7384 | msgstr "# krypterade PONG-meddelanden mottagna" | 7252 | msgstr "# krypterade PONG-meddelanden mottagna" |
7385 | 7253 | ||
7386 | #: src/transport/gnunet-service-transport_neighbours.c:3563 | 7254 | #: src/transport/gnunet-service-transport_neighbours.c:3566 |
7387 | msgid "# disconnect messages ignored (timestamp)" | 7255 | msgid "# disconnect messages ignored (timestamp)" |
7388 | msgstr "" | 7256 | msgstr "" |
7389 | 7257 | ||
7390 | #: src/transport/gnunet-service-transport_neighbours.c:3697 | 7258 | #: src/transport/gnunet-service-transport_neighbours.c:3700 |
7391 | #, fuzzy | 7259 | #, fuzzy |
7392 | msgid "# disconnected from peer upon explicit request" | 7260 | msgid "# disconnected from peer upon explicit request" |
7393 | msgstr "# av anslutna parter" | 7261 | msgstr "# av anslutna parter" |
@@ -7422,8 +7290,8 @@ msgstr "" | |||
7422 | 7290 | ||
7423 | #: src/transport/gnunet-service-transport_validation.c:491 | 7291 | #: src/transport/gnunet-service-transport_validation.c:491 |
7424 | #: src/transport/gnunet-service-transport_validation.c:677 | 7292 | #: src/transport/gnunet-service-transport_validation.c:677 |
7425 | #: src/transport/gnunet-service-transport_validation.c:988 | 7293 | #: src/transport/gnunet-service-transport_validation.c:997 |
7426 | #: src/transport/gnunet-service-transport_validation.c:1590 | 7294 | #: src/transport/gnunet-service-transport_validation.c:1609 |
7427 | msgid "# validations running" | 7295 | msgid "# validations running" |
7428 | msgstr "" | 7296 | msgstr "" |
7429 | 7297 | ||
@@ -7448,101 +7316,61 @@ msgstr "" | |||
7448 | msgid "# address revalidations started" | 7316 | msgid "# address revalidations started" |
7449 | msgstr "" | 7317 | msgstr "" |
7450 | 7318 | ||
7451 | #: src/transport/gnunet-service-transport_validation.c:1114 | 7319 | #: src/transport/gnunet-service-transport_validation.c:1123 |
7452 | #, fuzzy | 7320 | #, fuzzy |
7453 | msgid "# PING message for different peer received" | 7321 | msgid "# PING message for different peer received" |
7454 | msgstr "# PING-meddelanden skapade" | 7322 | msgstr "# PING-meddelanden skapade" |
7455 | 7323 | ||
7456 | #: src/transport/gnunet-service-transport_validation.c:1165 | 7324 | #: src/transport/gnunet-service-transport_validation.c:1174 |
7457 | #, c-format | 7325 | #, c-format |
7458 | msgid "Plugin `%s' not available, cannot confirm having this address\n" | 7326 | msgid "Plugin `%s' not available, cannot confirm having this address\n" |
7459 | msgstr "" | 7327 | msgstr "" |
7460 | 7328 | ||
7461 | #: src/transport/gnunet-service-transport_validation.c:1178 | 7329 | #: src/transport/gnunet-service-transport_validation.c:1187 |
7462 | msgid "# failed address checks during validation" | 7330 | msgid "# failed address checks during validation" |
7463 | msgstr "" | 7331 | msgstr "" |
7464 | 7332 | ||
7465 | #: src/transport/gnunet-service-transport_validation.c:1181 | 7333 | #: src/transport/gnunet-service-transport_validation.c:1190 |
7466 | #, c-format | 7334 | #, c-format |
7467 | msgid "Address `%s' is not one of my addresses, not confirming PING\n" | 7335 | msgid "Address `%s' is not one of my addresses, not confirming PING\n" |
7468 | msgstr "" | 7336 | msgstr "" |
7469 | 7337 | ||
7470 | #: src/transport/gnunet-service-transport_validation.c:1189 | 7338 | #: src/transport/gnunet-service-transport_validation.c:1198 |
7471 | msgid "# successful address checks during validation" | 7339 | msgid "# successful address checks during validation" |
7472 | msgstr "" | 7340 | msgstr "" |
7473 | 7341 | ||
7474 | #: src/transport/gnunet-service-transport_validation.c:1202 | 7342 | #: src/transport/gnunet-service-transport_validation.c:1211 |
7475 | #, c-format | 7343 | #, c-format |
7476 | msgid "" | 7344 | msgid "" |
7477 | "Not confirming PING from peer `%s' with address `%s' since I cannot confirm " | 7345 | "Not confirming PING from peer `%s' with address `%s' since I cannot confirm " |
7478 | "having this address.\n" | 7346 | "having this address.\n" |
7479 | msgstr "" | 7347 | msgstr "" |
7480 | 7348 | ||
7481 | #: src/transport/gnunet-service-transport_validation.c:1257 | 7349 | #: src/transport/gnunet-service-transport_validation.c:1266 |
7482 | #, fuzzy, c-format | 7350 | #, fuzzy, c-format |
7483 | msgid "Failed to create PONG signature for peer `%s'\n" | 7351 | msgid "Failed to create PONG signature for peer `%s'\n" |
7484 | msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n" | 7352 | msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n" |
7485 | 7353 | ||
7486 | #: src/transport/gnunet-service-transport_validation.c:1308 | 7354 | #: src/transport/gnunet-service-transport_validation.c:1317 |
7487 | msgid "# PONGs unicast via reliable transport" | 7355 | msgid "# PONGs unicast via reliable transport" |
7488 | msgstr "" | 7356 | msgstr "" |
7489 | 7357 | ||
7490 | #: src/transport/gnunet-service-transport_validation.c:1317 | 7358 | #: src/transport/gnunet-service-transport_validation.c:1326 |
7491 | msgid "# PONGs multicast to all available addresses" | 7359 | msgid "# PONGs multicast to all available addresses" |
7492 | msgstr "" | 7360 | msgstr "" |
7493 | 7361 | ||
7494 | #: src/transport/gnunet-service-transport_validation.c:1480 | 7362 | #: src/transport/gnunet-service-transport_validation.c:1499 |
7495 | msgid "# PONGs dropped, no matching pending validation" | 7363 | msgid "# PONGs dropped, no matching pending validation" |
7496 | msgstr "" | 7364 | msgstr "" |
7497 | 7365 | ||
7498 | #: src/transport/gnunet-service-transport_validation.c:1498 | 7366 | #: src/transport/gnunet-service-transport_validation.c:1517 |
7499 | msgid "# PONGs dropped, signature expired" | 7367 | msgid "# PONGs dropped, signature expired" |
7500 | msgstr "" | 7368 | msgstr "" |
7501 | 7369 | ||
7502 | #: src/transport/gnunet-service-transport_validation.c:1553 | 7370 | #: src/transport/gnunet-service-transport_validation.c:1572 |
7503 | msgid "# validations succeeded" | 7371 | msgid "# validations succeeded" |
7504 | msgstr "" | 7372 | msgstr "" |
7505 | 7373 | ||
7506 | #: src/transport/gnunet-transport-profiler.c:219 | ||
7507 | #, c-format | ||
7508 | msgid "%llu B in %llu ms == %.2f KB/s!\n" | ||
7509 | msgstr "" | ||
7510 | |||
7511 | #: src/transport/gnunet-transport-profiler.c:617 | ||
7512 | msgid "send data to peer" | ||
7513 | msgstr "" | ||
7514 | |||
7515 | #: src/transport/gnunet-transport-profiler.c:621 | ||
7516 | #, fuzzy | ||
7517 | msgid "receive data from peer" | ||
7518 | msgstr "# byte mottagna av typen %d" | ||
7519 | |||
7520 | #: src/transport/gnunet-transport-profiler.c:626 | ||
7521 | #, fuzzy | ||
7522 | msgid "iterations" | ||
7523 | msgstr "Visa alla alternativ" | ||
7524 | |||
7525 | #: src/transport/gnunet-transport-profiler.c:631 | ||
7526 | #, fuzzy | ||
7527 | msgid "number of messages to send" | ||
7528 | msgstr "antal meddelanden att använda per iteration" | ||
7529 | |||
7530 | #: src/transport/gnunet-transport-profiler.c:636 | ||
7531 | #, fuzzy | ||
7532 | msgid "message size to use" | ||
7533 | msgstr "meddelandestorlek" | ||
7534 | |||
7535 | #: src/transport/gnunet-transport-profiler.c:641 | ||
7536 | #: src/transport/gnunet-transport.c:1462 | ||
7537 | msgid "peer identity" | ||
7538 | msgstr "" | ||
7539 | |||
7540 | #: src/transport/gnunet-transport-profiler.c:652 | ||
7541 | #: src/transport/gnunet-transport.c:1482 | ||
7542 | #, fuzzy | ||
7543 | msgid "Direct access to transport service." | ||
7544 | msgstr "Misslyckades att ansluta till gnunetd.\n" | ||
7545 | |||
7546 | #: src/transport/gnunet-transport.c:413 | 7374 | #: src/transport/gnunet-transport.c:413 |
7547 | #, fuzzy, c-format | 7375 | #, fuzzy, c-format |
7548 | msgid "Transmitted %llu bytes/s (%llu bytes in %s)\n" | 7376 | msgid "Transmitted %llu bytes/s (%llu bytes in %s)\n" |
@@ -7682,6 +7510,11 @@ msgstr "Skriv ut information om GNUnets motparter." | |||
7682 | msgid "do not resolve hostnames" | 7510 | msgid "do not resolve hostnames" |
7683 | msgstr "Misslyckades att läsa kompislista från \"%s\"\n" | 7511 | msgstr "Misslyckades att läsa kompislista från \"%s\"\n" |
7684 | 7512 | ||
7513 | #: src/transport/gnunet-transport.c:1462 | ||
7514 | #: src/transport/gnunet-transport-profiler.c:641 | ||
7515 | msgid "peer identity" | ||
7516 | msgstr "" | ||
7517 | |||
7685 | #: src/transport/gnunet-transport.c:1466 | 7518 | #: src/transport/gnunet-transport.c:1466 |
7686 | msgid "monitor plugin sessions" | 7519 | msgid "monitor plugin sessions" |
7687 | msgstr "" | 7520 | msgstr "" |
@@ -7690,6 +7523,41 @@ msgstr "" | |||
7690 | msgid "send data for benchmarking to the other peer (until CTRL-C)" | 7523 | msgid "send data for benchmarking to the other peer (until CTRL-C)" |
7691 | msgstr "" | 7524 | msgstr "" |
7692 | 7525 | ||
7526 | #: src/transport/gnunet-transport.c:1482 | ||
7527 | #: src/transport/gnunet-transport-profiler.c:652 | ||
7528 | #, fuzzy | ||
7529 | msgid "Direct access to transport service." | ||
7530 | msgstr "Misslyckades att ansluta till gnunetd.\n" | ||
7531 | |||
7532 | #: src/transport/gnunet-transport-profiler.c:219 | ||
7533 | #, c-format | ||
7534 | msgid "%llu B in %llu ms == %.2f KB/s!\n" | ||
7535 | msgstr "" | ||
7536 | |||
7537 | #: src/transport/gnunet-transport-profiler.c:617 | ||
7538 | msgid "send data to peer" | ||
7539 | msgstr "" | ||
7540 | |||
7541 | #: src/transport/gnunet-transport-profiler.c:621 | ||
7542 | #, fuzzy | ||
7543 | msgid "receive data from peer" | ||
7544 | msgstr "# byte mottagna av typen %d" | ||
7545 | |||
7546 | #: src/transport/gnunet-transport-profiler.c:626 | ||
7547 | #, fuzzy | ||
7548 | msgid "iterations" | ||
7549 | msgstr "Visa alla alternativ" | ||
7550 | |||
7551 | #: src/transport/gnunet-transport-profiler.c:631 | ||
7552 | #, fuzzy | ||
7553 | msgid "number of messages to send" | ||
7554 | msgstr "antal meddelanden att använda per iteration" | ||
7555 | |||
7556 | #: src/transport/gnunet-transport-profiler.c:636 | ||
7557 | #, fuzzy | ||
7558 | msgid "message size to use" | ||
7559 | msgstr "meddelandestorlek" | ||
7560 | |||
7693 | #: src/transport/plugin_transport_http_client.c:1474 | 7561 | #: src/transport/plugin_transport_http_client.c:1474 |
7694 | #: src/transport/plugin_transport_http_server.c:2312 | 7562 | #: src/transport/plugin_transport_http_server.c:2312 |
7695 | #: src/transport/plugin_transport_http_server.c:3526 | 7563 | #: src/transport/plugin_transport_http_server.c:3526 |
@@ -7977,6 +7845,21 @@ msgstr "" | |||
7977 | msgid "TCP transport advertises itself as being on port %llu\n" | 7845 | msgid "TCP transport advertises itself as being on port %llu\n" |
7978 | msgstr "" | 7846 | msgstr "" |
7979 | 7847 | ||
7848 | #: src/transport/plugin_transport_udp_broadcasting.c:168 | ||
7849 | #, fuzzy | ||
7850 | msgid "# Multicast HELLO beacons received via UDP" | ||
7851 | msgstr "# krypterade PONG-meddelanden mottagna" | ||
7852 | |||
7853 | #: src/transport/plugin_transport_udp_broadcasting.c:548 | ||
7854 | msgid "" | ||
7855 | "Disabling HELLO broadcasting due to friend-to-friend only configuration!\n" | ||
7856 | msgstr "" | ||
7857 | |||
7858 | #: src/transport/plugin_transport_udp_broadcasting.c:565 | ||
7859 | #, c-format | ||
7860 | msgid "Failed to set IPv4 broadcast option for broadcast socket on port %d\n" | ||
7861 | msgstr "" | ||
7862 | |||
7980 | #: src/transport/plugin_transport_udp.c:3366 | 7863 | #: src/transport/plugin_transport_udp.c:3366 |
7981 | #, c-format | 7864 | #, c-format |
7982 | msgid "" | 7865 | msgid "" |
@@ -8025,21 +7908,6 @@ msgstr "\"%s\" är inte tillgänglig." | |||
8025 | msgid "Failed to create UDP network sockets\n" | 7908 | msgid "Failed to create UDP network sockets\n" |
8026 | msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n" | 7909 | msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n" |
8027 | 7910 | ||
8028 | #: src/transport/plugin_transport_udp_broadcasting.c:168 | ||
8029 | #, fuzzy | ||
8030 | msgid "# Multicast HELLO beacons received via UDP" | ||
8031 | msgstr "# krypterade PONG-meddelanden mottagna" | ||
8032 | |||
8033 | #: src/transport/plugin_transport_udp_broadcasting.c:548 | ||
8034 | msgid "" | ||
8035 | "Disabling HELLO broadcasting due to friend-to-friend only configuration!\n" | ||
8036 | msgstr "" | ||
8037 | |||
8038 | #: src/transport/plugin_transport_udp_broadcasting.c:565 | ||
8039 | #, c-format | ||
8040 | msgid "Failed to set IPv4 broadcast option for broadcast socket on port %d\n" | ||
8041 | msgstr "" | ||
8042 | |||
8043 | #: src/transport/plugin_transport_unix.c:1403 | 7911 | #: src/transport/plugin_transport_unix.c:1403 |
8044 | #, fuzzy, c-format | 7912 | #, fuzzy, c-format |
8045 | msgid "Cannot create path to `%s'\n" | 7913 | msgid "Cannot create path to `%s'\n" |
@@ -8155,7 +8023,7 @@ msgid "" | |||
8155 | "`GNUNET_SERVER_receive_done' after %s\n" | 8023 | "`GNUNET_SERVER_receive_done' after %s\n" |
8156 | msgstr "" | 8024 | msgstr "" |
8157 | 8025 | ||
8158 | #: src/transport/tcp_service_legacy.c:339 src/util/service.c:2336 | 8026 | #: src/transport/tcp_service_legacy.c:339 src/util/service.c:2346 |
8159 | #, fuzzy, c-format | 8027 | #, fuzzy, c-format |
8160 | msgid "Unknown address family %d\n" | 8028 | msgid "Unknown address family %d\n" |
8161 | msgstr "Okänd operation \"%s\"\n" | 8029 | msgstr "Okänd operation \"%s\"\n" |
@@ -8231,19 +8099,19 @@ msgstr "Kan inte ändra användare/grupp till \"%s\": %s\n" | |||
8231 | msgid "do daemonize (detach from terminal)" | 8099 | msgid "do daemonize (detach from terminal)" |
8232 | msgstr "" | 8100 | msgstr "" |
8233 | 8101 | ||
8234 | #: src/transport/tcp_service_legacy.c:1448 src/util/program.c:244 | 8102 | #: src/transport/tcp_service_legacy.c:1448 src/util/program.c:255 |
8235 | #: src/util/service.c:1790 | 8103 | #: src/util/service.c:1790 |
8236 | #, fuzzy, c-format | 8104 | #, fuzzy, c-format |
8237 | msgid "Malformed configuration file `%s', exit ...\n" | 8105 | msgid "Malformed configuration file `%s', exit ...\n" |
8238 | msgstr "Kunde inte spara konfigurationsfil \"%s\":" | 8106 | msgstr "Kunde inte spara konfigurationsfil \"%s\":" |
8239 | 8107 | ||
8240 | #: src/transport/tcp_service_legacy.c:1458 src/util/program.c:261 | 8108 | #: src/transport/tcp_service_legacy.c:1458 src/util/program.c:272 |
8241 | #: src/util/service.c:1801 | 8109 | #: src/util/service.c:1801 |
8242 | #, fuzzy | 8110 | #, fuzzy |
8243 | msgid "Malformed configuration, exit ...\n" | 8111 | msgid "Malformed configuration, exit ...\n" |
8244 | msgstr "Kunde inte spara konfigurationsfil \"%s\":" | 8112 | msgstr "Kunde inte spara konfigurationsfil \"%s\":" |
8245 | 8113 | ||
8246 | #: src/transport/tcp_service_legacy.c:1463 src/util/program.c:256 | 8114 | #: src/transport/tcp_service_legacy.c:1463 src/util/program.c:267 |
8247 | #: src/util/service.c:1807 | 8115 | #: src/util/service.c:1807 |
8248 | #, fuzzy, c-format | 8116 | #, fuzzy, c-format |
8249 | msgid "Could not access configuration file `%s'\n" | 8117 | msgid "Could not access configuration file `%s'\n" |
@@ -8284,7 +8152,7 @@ msgstr "" | |||
8284 | msgid "Metadata `%s' failed to deserialize" | 8152 | msgid "Metadata `%s' failed to deserialize" |
8285 | msgstr "" | 8153 | msgstr "" |
8286 | 8154 | ||
8287 | #: src/util/client.c:882 | 8155 | #: src/util/client.c:911 |
8288 | #, c-format | 8156 | #, c-format |
8289 | msgid "Need a non-empty hostname for service `%s'.\n" | 8157 | msgid "Need a non-empty hostname for service `%s'.\n" |
8290 | msgstr "" | 8158 | msgstr "" |
@@ -8382,22 +8250,22 @@ msgid "" | |||
8382 | "%llu)\n" | 8250 | "%llu)\n" |
8383 | msgstr "" | 8251 | msgstr "" |
8384 | 8252 | ||
8385 | #: src/util/crypto_ecc.c:777 | 8253 | #: src/util/crypto_ecc.c:810 |
8386 | #, fuzzy, c-format | 8254 | #, fuzzy, c-format |
8387 | msgid "ECC signing failed at %s:%d: %s\n" | 8255 | msgid "ECC signing failed at %s:%d: %s\n" |
8388 | msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n" | 8256 | msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n" |
8389 | 8257 | ||
8390 | #: src/util/crypto_ecc.c:827 | 8258 | #: src/util/crypto_ecc.c:860 |
8391 | #, fuzzy, c-format | 8259 | #, fuzzy, c-format |
8392 | msgid "EdDSA signing failed at %s:%d: %s\n" | 8260 | msgid "EdDSA signing failed at %s:%d: %s\n" |
8393 | msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n" | 8261 | msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n" |
8394 | 8262 | ||
8395 | #: src/util/crypto_ecc.c:901 | 8263 | #: src/util/crypto_ecc.c:934 |
8396 | #, fuzzy, c-format | 8264 | #, fuzzy, c-format |
8397 | msgid "ECDSA signature verification failed at %s:%d: %s\n" | 8265 | msgid "ECDSA signature verification failed at %s:%d: %s\n" |
8398 | msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n" | 8266 | msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n" |
8399 | 8267 | ||
8400 | #: src/util/crypto_ecc.c:958 | 8268 | #: src/util/crypto_ecc.c:991 |
8401 | #, fuzzy, c-format | 8269 | #, fuzzy, c-format |
8402 | msgid "EdDSA signature verification failed at %s:%d: %s\n" | 8270 | msgid "EdDSA signature verification failed at %s:%d: %s\n" |
8403 | msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n" | 8271 | msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n" |
@@ -8621,86 +8489,90 @@ msgstr "" | |||
8621 | msgid "Manipulate GNUnet configuration files" | 8489 | msgid "Manipulate GNUnet configuration files" |
8622 | msgstr "skriv ut ett värde från konfigurationsfilen till standard ut" | 8490 | msgstr "skriv ut ett värde från konfigurationsfilen till standard ut" |
8623 | 8491 | ||
8624 | #: src/util/gnunet-ecc.c:89 | 8492 | #: src/util/gnunet-ecc.c:94 |
8625 | #, fuzzy, c-format | 8493 | #, fuzzy, c-format |
8626 | msgid "Failed to open `%s': %s\n" | 8494 | msgid "Failed to open `%s': %s\n" |
8627 | msgstr "Misslyckades att leverera \"%s\" meddelande.\n" | 8495 | msgstr "Misslyckades att leverera \"%s\" meddelande.\n" |
8628 | 8496 | ||
8629 | #: src/util/gnunet-ecc.c:125 | 8497 | #: src/util/gnunet-ecc.c:130 |
8630 | #, c-format | 8498 | #, c-format |
8631 | msgid "Generating %u keys like %s, please wait" | 8499 | msgid "Generating %u keys like %s, please wait" |
8632 | msgstr "" | 8500 | msgstr "" |
8633 | 8501 | ||
8634 | #: src/util/gnunet-ecc.c:138 | 8502 | #: src/util/gnunet-ecc.c:143 |
8635 | #, c-format | 8503 | #, c-format |
8636 | msgid "Generating %u keys, please wait" | 8504 | msgid "Generating %u keys, please wait" |
8637 | msgstr "" | 8505 | msgstr "" |
8638 | 8506 | ||
8639 | #: src/util/gnunet-ecc.c:179 | 8507 | #: src/util/gnunet-ecc.c:184 |
8640 | #, fuzzy, c-format | 8508 | #, fuzzy, c-format |
8641 | msgid "" | 8509 | msgid "" |
8642 | "\n" | 8510 | "\n" |
8643 | "Failed to write to `%s': %s\n" | 8511 | "Failed to write to `%s': %s\n" |
8644 | msgstr "Fel vid %s:%d.\n" | 8512 | msgstr "Fel vid %s:%d.\n" |
8645 | 8513 | ||
8646 | #: src/util/gnunet-ecc.c:189 | 8514 | #: src/util/gnunet-ecc.c:194 |
8647 | #, fuzzy, c-format | 8515 | #, fuzzy, c-format |
8648 | msgid "" | 8516 | msgid "" |
8649 | "\n" | 8517 | "\n" |
8650 | "Finished!\n" | 8518 | "Finished!\n" |
8651 | msgstr "Slutför" | 8519 | msgstr "Slutför" |
8652 | 8520 | ||
8653 | #: src/util/gnunet-ecc.c:192 | 8521 | #: src/util/gnunet-ecc.c:197 |
8654 | #, c-format | 8522 | #, c-format |
8655 | msgid "" | 8523 | msgid "" |
8656 | "\n" | 8524 | "\n" |
8657 | "Error, %u keys not generated\n" | 8525 | "Error, %u keys not generated\n" |
8658 | msgstr "" | 8526 | msgstr "" |
8659 | 8527 | ||
8660 | #: src/util/gnunet-ecc.c:283 | 8528 | #: src/util/gnunet-ecc.c:288 |
8661 | #, fuzzy, c-format | 8529 | #, fuzzy, c-format |
8662 | msgid "Hostkeys file `%s' not found\n" | 8530 | msgid "Hostkeys file `%s' not found\n" |
8663 | msgstr "\"%s\" misslyckades: tabell hittades inte!\n" | 8531 | msgstr "\"%s\" misslyckades: tabell hittades inte!\n" |
8664 | 8532 | ||
8665 | #: src/util/gnunet-ecc.c:294 | 8533 | #: src/util/gnunet-ecc.c:299 |
8666 | #, fuzzy, c-format | 8534 | #, fuzzy, c-format |
8667 | msgid "Hostkeys file `%s' is empty\n" | 8535 | msgid "Hostkeys file `%s' is empty\n" |
8668 | msgstr "antal meddelanden att använda per iteration" | 8536 | msgstr "antal meddelanden att använda per iteration" |
8669 | 8537 | ||
8670 | #: src/util/gnunet-ecc.c:316 | 8538 | #: src/util/gnunet-ecc.c:321 |
8671 | #, fuzzy, c-format | 8539 | #, fuzzy, c-format |
8672 | msgid "Could not read hostkey file: %s\n" | 8540 | msgid "Could not read hostkey file: %s\n" |
8673 | msgstr "Kunde inte skapa värdnyckel!\n" | 8541 | msgstr "Kunde inte skapa värdnyckel!\n" |
8674 | 8542 | ||
8675 | #: src/util/gnunet-ecc.c:367 | 8543 | #: src/util/gnunet-ecc.c:372 |
8676 | msgid "No hostkey file specified on command line\n" | 8544 | msgid "No hostkey file specified on command line\n" |
8677 | msgstr "" | 8545 | msgstr "" |
8678 | 8546 | ||
8679 | #: src/util/gnunet-ecc.c:425 | 8547 | #: src/util/gnunet-ecc.c:437 |
8680 | msgid "list keys included in a file (for testing)" | 8548 | msgid "list keys included in a file (for testing)" |
8681 | msgstr "" | 8549 | msgstr "" |
8682 | 8550 | ||
8683 | #: src/util/gnunet-ecc.c:430 | 8551 | #: src/util/gnunet-ecc.c:442 |
8684 | msgid "number of keys to list included in a file (for testing)" | 8552 | msgid "number of keys to list included in a file (for testing)" |
8685 | msgstr "" | 8553 | msgstr "" |
8686 | 8554 | ||
8687 | #: src/util/gnunet-ecc.c:435 | 8555 | #: src/util/gnunet-ecc.c:447 |
8688 | msgid "create COUNT public-private key pairs (for testing)" | 8556 | msgid "create COUNT public-private key pairs (for testing)" |
8689 | msgstr "" | 8557 | msgstr "" |
8690 | 8558 | ||
8691 | #: src/util/gnunet-ecc.c:439 | 8559 | #: src/util/gnunet-ecc.c:451 |
8692 | msgid "print the public key in ASCII format" | 8560 | msgid "print the public key in ASCII format" |
8693 | msgstr "" | 8561 | msgstr "" |
8694 | 8562 | ||
8695 | #: src/util/gnunet-ecc.c:443 | 8563 | #: src/util/gnunet-ecc.c:455 |
8564 | msgid "print the private key in ASCII format" | ||
8565 | msgstr "" | ||
8566 | |||
8567 | #: src/util/gnunet-ecc.c:459 | ||
8696 | msgid "print the public key in HEX format" | 8568 | msgid "print the public key in HEX format" |
8697 | msgstr "" | 8569 | msgstr "" |
8698 | 8570 | ||
8699 | #: src/util/gnunet-ecc.c:447 | 8571 | #: src/util/gnunet-ecc.c:463 |
8700 | msgid "print examples of ECC operations (used for compatibility testing)" | 8572 | msgid "print examples of ECC operations (used for compatibility testing)" |
8701 | msgstr "" | 8573 | msgstr "" |
8702 | 8574 | ||
8703 | #: src/util/gnunet-ecc.c:463 | 8575 | #: src/util/gnunet-ecc.c:479 |
8704 | #, fuzzy | 8576 | #, fuzzy |
8705 | msgid "Manipulate GNUnet private ECC key files" | 8577 | msgid "Manipulate GNUnet private ECC key files" |
8706 | msgstr "skriv ut ett värde från konfigurationsfilen till standard ut" | 8578 | msgstr "skriv ut ett värde från konfigurationsfilen till standard ut" |
@@ -8863,22 +8735,22 @@ msgstr "" | |||
8863 | "Du måste ange ett positivt nummer för \"%s\" i konfigurationen i sektion \"%s" | 8735 | "Du måste ange ett positivt nummer för \"%s\" i konfigurationen i sektion \"%s" |
8864 | "\".\n" | 8736 | "\".\n" |
8865 | 8737 | ||
8866 | #: src/util/resolver_api.c:826 | 8738 | #: src/util/resolver_api.c:827 |
8867 | #, fuzzy, c-format | 8739 | #, fuzzy, c-format |
8868 | msgid "Timeout trying to resolve hostname `%s'.\n" | 8740 | msgid "Timeout trying to resolve hostname `%s'.\n" |
8869 | msgstr "Misslyckades att läsa kompislista från \"%s\"\n" | 8741 | msgstr "Misslyckades att läsa kompislista från \"%s\"\n" |
8870 | 8742 | ||
8871 | #: src/util/resolver_api.c:839 | 8743 | #: src/util/resolver_api.c:840 |
8872 | #, c-format | 8744 | #, c-format |
8873 | msgid "Timeout trying to resolve IP address `%s'.\n" | 8745 | msgid "Timeout trying to resolve IP address `%s'.\n" |
8874 | msgstr "" | 8746 | msgstr "" |
8875 | 8747 | ||
8876 | #: src/util/resolver_api.c:1023 | 8748 | #: src/util/resolver_api.c:1024 |
8877 | msgid "Resolver not configured correctly.\n" | 8749 | msgid "Resolver not configured correctly.\n" |
8878 | msgstr "" | 8750 | msgstr "" |
8879 | 8751 | ||
8880 | #: src/util/resolver_api.c:1109 src/util/resolver_api.c:1132 | 8752 | #: src/util/resolver_api.c:1110 src/util/resolver_api.c:1133 |
8881 | #: src/util/resolver_api.c:1146 | 8753 | #: src/util/resolver_api.c:1147 |
8882 | #, fuzzy, c-format | 8754 | #, fuzzy, c-format |
8883 | msgid "Could not resolve our FQDN: %s\n" | 8755 | msgid "Could not resolve our FQDN: %s\n" |
8884 | msgstr "Kunde inte slå upp \"%s\": %s\n" | 8756 | msgstr "Kunde inte slå upp \"%s\": %s\n" |
@@ -8888,7 +8760,7 @@ msgid "" | |||
8888 | "Could not bind to any of the ports I was supposed to, refusing to run!\n" | 8760 | "Could not bind to any of the ports I was supposed to, refusing to run!\n" |
8889 | msgstr "" | 8761 | msgstr "" |
8890 | 8762 | ||
8891 | #: src/util/service.c:2081 | 8763 | #: src/util/service.c:2091 |
8892 | #, c-format | 8764 | #, c-format |
8893 | msgid "" | 8765 | msgid "" |
8894 | "Processing code for message of type %u did not call " | 8766 | "Processing code for message of type %u did not call " |
@@ -9074,65 +8946,65 @@ msgstr "" | |||
9074 | msgid "# ICMPv6 packets dropped (not allowed)" | 8946 | msgid "# ICMPv6 packets dropped (not allowed)" |
9075 | msgstr "" | 8947 | msgstr "" |
9076 | 8948 | ||
9077 | #: src/vpn/gnunet-service-vpn.c:2232 | 8949 | #: src/vpn/gnunet-service-vpn.c:2235 |
9078 | #, fuzzy | 8950 | #, fuzzy |
9079 | msgid "# Packets received from TUN interface" | 8951 | msgid "# Packets received from TUN interface" |
9080 | msgstr "Meddelande mottaget från klient är ogiltig.\n" | 8952 | msgstr "Meddelande mottaget från klient är ogiltig.\n" |
9081 | 8953 | ||
9082 | #: src/vpn/gnunet-service-vpn.c:2265 src/vpn/gnunet-service-vpn.c:2301 | 8954 | #: src/vpn/gnunet-service-vpn.c:2268 src/vpn/gnunet-service-vpn.c:2304 |
9083 | #, c-format | 8955 | #, c-format |
9084 | msgid "Packet received for unmapped destination `%s' (dropping it)\n" | 8956 | msgid "Packet received for unmapped destination `%s' (dropping it)\n" |
9085 | msgstr "" | 8957 | msgstr "" |
9086 | 8958 | ||
9087 | #: src/vpn/gnunet-service-vpn.c:2311 | 8959 | #: src/vpn/gnunet-service-vpn.c:2314 |
9088 | msgid "Received IPv4 packet with options (dropping it)\n" | 8960 | msgid "Received IPv4 packet with options (dropping it)\n" |
9089 | msgstr "" | 8961 | msgstr "" |
9090 | 8962 | ||
9091 | #: src/vpn/gnunet-service-vpn.c:2325 | 8963 | #: src/vpn/gnunet-service-vpn.c:2328 |
9092 | #, c-format | 8964 | #, c-format |
9093 | msgid "Received packet of unknown protocol %d from TUN (dropping it)\n" | 8965 | msgid "Received packet of unknown protocol %d from TUN (dropping it)\n" |
9094 | msgstr "" | 8966 | msgstr "" |
9095 | 8967 | ||
9096 | #: src/vpn/gnunet-service-vpn.c:2364 | 8968 | #: src/vpn/gnunet-service-vpn.c:2367 |
9097 | msgid "Failed to find unallocated IPv4 address in VPN's range\n" | 8969 | msgid "Failed to find unallocated IPv4 address in VPN's range\n" |
9098 | msgstr "" | 8970 | msgstr "" |
9099 | 8971 | ||
9100 | #: src/vpn/gnunet-service-vpn.c:2419 | 8972 | #: src/vpn/gnunet-service-vpn.c:2422 |
9101 | msgid "Failed to find unallocated IPv6 address in VPN's range\n" | 8973 | msgid "Failed to find unallocated IPv6 address in VPN's range\n" |
9102 | msgstr "" | 8974 | msgstr "" |
9103 | 8975 | ||
9104 | #: src/vpn/gnunet-service-vpn.c:2461 src/vpn/gnunet-service-vpn.c:2683 | 8976 | #: src/vpn/gnunet-service-vpn.c:2464 src/vpn/gnunet-service-vpn.c:2686 |
9105 | #, fuzzy | 8977 | #, fuzzy |
9106 | msgid "# Active destinations" | 8978 | msgid "# Active destinations" |
9107 | msgstr "Nätverksanslutning" | 8979 | msgstr "Nätverksanslutning" |
9108 | 8980 | ||
9109 | #: src/vpn/gnunet-service-vpn.c:2732 | 8981 | #: src/vpn/gnunet-service-vpn.c:2735 |
9110 | msgid "Failed to allocate IP address for new destination\n" | 8982 | msgid "Failed to allocate IP address for new destination\n" |
9111 | msgstr "" | 8983 | msgstr "" |
9112 | 8984 | ||
9113 | #: src/vpn/gnunet-service-vpn.c:2995 | 8985 | #: src/vpn/gnunet-service-vpn.c:2998 |
9114 | #, fuzzy | 8986 | #, fuzzy |
9115 | msgid "Must specify valid IPv6 address" | 8987 | msgid "Must specify valid IPv6 address" |
9116 | msgstr "\"%s\" är inte tillgänglig." | 8988 | msgstr "\"%s\" är inte tillgänglig." |
9117 | 8989 | ||
9118 | #: src/vpn/gnunet-service-vpn.c:3019 | 8990 | #: src/vpn/gnunet-service-vpn.c:3022 |
9119 | msgid "Must specify valid IPv6 mask" | 8991 | msgid "Must specify valid IPv6 mask" |
9120 | msgstr "" | 8992 | msgstr "" |
9121 | 8993 | ||
9122 | #: src/vpn/gnunet-service-vpn.c:3027 | 8994 | #: src/vpn/gnunet-service-vpn.c:3030 |
9123 | msgid "IPv6 support disabled as this system does not support IPv6\n" | 8995 | msgid "IPv6 support disabled as this system does not support IPv6\n" |
9124 | msgstr "" | 8996 | msgstr "" |
9125 | 8997 | ||
9126 | #: src/vpn/gnunet-service-vpn.c:3040 | 8998 | #: src/vpn/gnunet-service-vpn.c:3043 |
9127 | #, fuzzy | 8999 | #, fuzzy |
9128 | msgid "Must specify valid IPv4 address" | 9000 | msgid "Must specify valid IPv4 address" |
9129 | msgstr "\"%s\" är inte tillgänglig." | 9001 | msgstr "\"%s\" är inte tillgänglig." |
9130 | 9002 | ||
9131 | #: src/vpn/gnunet-service-vpn.c:3053 | 9003 | #: src/vpn/gnunet-service-vpn.c:3056 |
9132 | msgid "Must specify valid IPv4 mask" | 9004 | msgid "Must specify valid IPv4 mask" |
9133 | msgstr "" | 9005 | msgstr "" |
9134 | 9006 | ||
9135 | #: src/vpn/gnunet-service-vpn.c:3063 | 9007 | #: src/vpn/gnunet-service-vpn.c:3066 |
9136 | msgid "IPv4 support disabled as this system does not support IPv4\n" | 9008 | msgid "IPv4 support disabled as this system does not support IPv4\n" |
9137 | msgstr "" | 9009 | msgstr "" |
9138 | 9010 | ||
@@ -9226,10 +9098,6 @@ msgid "`%s' failed on file `%s' at %s:%d with error: %s\n" | |||
9226 | msgstr "\"%s\" misslyckades för fil \"%s\" vid %s:%d med fel: %s\n" | 9098 | msgstr "\"%s\" misslyckades för fil \"%s\" vid %s:%d med fel: %s\n" |
9227 | 9099 | ||
9228 | #, fuzzy | 9100 | #, fuzzy |
9229 | #~ msgid "Token `%s' is malformed\n" | ||
9230 | #~ msgstr "Ogiltigt argument: \"%s\"\n" | ||
9231 | |||
9232 | #, fuzzy | ||
9233 | #~ msgid "Failed to create indices\n" | 9101 | #~ msgid "Failed to create indices\n" |
9234 | #~ msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n" | 9102 | #~ msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n" |
9235 | 9103 | ||
@@ -8,7 +8,7 @@ msgid "" | |||
8 | msgstr "" | 8 | msgstr "" |
9 | "Project-Id-Version: gnunet 0.8.0a\n" | 9 | "Project-Id-Version: gnunet 0.8.0a\n" |
10 | "Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n" | 10 | "Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n" |
11 | "POT-Creation-Date: 2017-10-20 15:14+0000\n" | 11 | "POT-Creation-Date: 2018-01-02 02:33+0100\n" |
12 | "PO-Revision-Date: 2008-09-10 22:05+0930\n" | 12 | "PO-Revision-Date: 2008-09-10 22:05+0930\n" |
13 | "Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n" | 13 | "Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n" |
14 | "Language-Team: Vietnamese <vi-VN@googlegroups.com>\n" | 14 | "Language-Team: Vietnamese <vi-VN@googlegroups.com>\n" |
@@ -252,14 +252,14 @@ msgid "Require valid port number for service `%s' in configuration!\n" | |||
252 | msgstr "" | 252 | msgstr "" |
253 | 253 | ||
254 | #: src/arm/gnunet-service-arm.c:430 src/transport/plugin_transport_tcp.c:1176 | 254 | #: src/arm/gnunet-service-arm.c:430 src/transport/plugin_transport_tcp.c:1176 |
255 | #: src/transport/tcp_service_legacy.c:613 src/util/client.c:480 | 255 | #: src/transport/tcp_service_legacy.c:613 src/util/client.c:505 |
256 | #: src/util/service.c:682 | 256 | #: src/util/service.c:682 |
257 | #, c-format | 257 | #, c-format |
258 | msgid "UNIXPATH `%s' too long, maximum length is %llu\n" | 258 | msgid "UNIXPATH `%s' too long, maximum length is %llu\n" |
259 | msgstr "" | 259 | msgstr "" |
260 | 260 | ||
261 | #: src/arm/gnunet-service-arm.c:434 src/transport/plugin_transport_tcp.c:1180 | 261 | #: src/arm/gnunet-service-arm.c:434 src/transport/plugin_transport_tcp.c:1180 |
262 | #: src/transport/tcp_service_legacy.c:617 src/util/client.c:485 | 262 | #: src/transport/tcp_service_legacy.c:617 src/util/client.c:510 |
263 | #: src/util/service.c:687 | 263 | #: src/util/service.c:687 |
264 | #, fuzzy, c-format | 264 | #, fuzzy, c-format |
265 | msgid "Using `%s' instead\n" | 265 | msgid "Using `%s' instead\n" |
@@ -362,15 +362,132 @@ msgstr "" | |||
362 | msgid "Initiating shutdown as requested by client.\n" | 362 | msgid "Initiating shutdown as requested by client.\n" |
363 | msgstr "" | 363 | msgstr "" |
364 | 364 | ||
365 | #: src/ats-tests/ats-testing-log.c:837 | 365 | #: src/ats/gnunet-ats-solver-eval.c:2781 src/ats/gnunet-ats-solver-eval.c:2822 |
366 | #, c-format | ||
367 | msgid "" | ||
368 | "Could not load quota for network `%s': `%s', assigning default bandwidth " | ||
369 | "%llu\n" | ||
370 | msgstr "" | ||
371 | |||
372 | #: src/ats/gnunet-ats-solver-eval.c:2799 | ||
373 | #, c-format | ||
374 | msgid "" | ||
375 | "No outbound quota configured for network `%s', assigning default bandwidth " | ||
376 | "%llu\n" | ||
377 | msgstr "" | ||
378 | |||
379 | #: src/ats/gnunet-ats-solver-eval.c:2840 | ||
380 | #, c-format | ||
381 | msgid "" | ||
382 | "No outbound quota configure for network `%s', assigning default bandwidth " | ||
383 | "%llu\n" | ||
384 | msgstr "" | ||
385 | |||
386 | #: src/ats/gnunet-ats-solver-eval.c:3294 src/ats-tests/gnunet-solver-eval.c:939 | ||
387 | msgid "solver to use" | ||
388 | msgstr "" | ||
389 | |||
390 | #: src/ats/gnunet-ats-solver-eval.c:3299 src/ats-tests/gnunet-solver-eval.c:945 | ||
391 | #: src/ats-tests/gnunet-solver-eval.c:950 | ||
392 | msgid "experiment to use" | ||
393 | msgstr "" | ||
394 | |||
395 | #: src/ats/gnunet-ats-solver-eval.c:3306 | ||
366 | #, fuzzy | 396 | #, fuzzy |
367 | msgid "Stop logging\n" | 397 | msgid "print logging" |
368 | msgstr "Theo dõi" | 398 | msgstr "Theo dõi" |
369 | 399 | ||
370 | #: src/ats-tests/ats-testing-log.c:892 | 400 | #: src/ats/gnunet-ats-solver-eval.c:3311 |
401 | msgid "save logging to disk" | ||
402 | msgstr "" | ||
403 | |||
404 | #: src/ats/gnunet-ats-solver-eval.c:3316 | ||
405 | msgid "disable normalization" | ||
406 | msgstr "" | ||
407 | |||
408 | #: src/ats/gnunet-service-ats_plugins.c:304 | ||
409 | #, c-format | ||
410 | msgid "" | ||
411 | "Could not load %s quota for network `%s': `%s', assigning default bandwidth " | ||
412 | "%llu\n" | ||
413 | msgstr "" | ||
414 | |||
415 | #: src/ats/gnunet-service-ats_plugins.c:314 | ||
416 | #, c-format | ||
417 | msgid "%s quota configured for network `%s' is %llu\n" | ||
418 | msgstr "" | ||
419 | |||
420 | #: src/ats/gnunet-service-ats_plugins.c:359 | ||
421 | #, c-format | ||
422 | msgid "" | ||
423 | "No %s-quota configured for network `%s', assigning default bandwidth %llu\n" | ||
424 | msgstr "" | ||
425 | |||
426 | #: src/ats/gnunet-service-ats_plugins.c:451 | ||
371 | #, fuzzy, c-format | 427 | #, fuzzy, c-format |
372 | msgid "Start logging `%s'\n" | 428 | msgid "Failed to initialize solver `%s'!\n" |
373 | msgstr "Đang bắt đầu tài về « %s »\n" | 429 | msgstr "Không thể sơ khởi SQLite: %s.\n" |
430 | |||
431 | #: src/ats/plugin_ats_mlp.c:1274 | ||
432 | msgid "Problem size too large, cannot allocate memory!\n" | ||
433 | msgstr "" | ||
434 | |||
435 | #: src/ats/plugin_ats_mlp.c:1869 | ||
436 | #, fuzzy, c-format | ||
437 | msgid "Adding address for peer `%s' multiple times\n" | ||
438 | msgstr "Không thể lấy địa chỉ của đồng đẳng « %s ».\n" | ||
439 | |||
440 | #: src/ats/plugin_ats_mlp.c:1913 | ||
441 | #, fuzzy, c-format | ||
442 | msgid "Updating address property for peer `%s' %p not added before\n" | ||
443 | msgstr "Không thể lấy địa chỉ của đồng đẳng « %s ».\n" | ||
444 | |||
445 | #: src/ats/plugin_ats_mlp.c:2475 | ||
446 | msgid "" | ||
447 | "MLP solver is not optimizing for anything, changing to feasibility check\n" | ||
448 | msgstr "" | ||
449 | |||
450 | #: src/ats/plugin_ats_mlp.c:2515 src/ats/plugin_ats_mlp.c:2532 | ||
451 | #: src/ats/plugin_ats_mlp.c:2564 src/ats/plugin_ats_mlp.c:2582 | ||
452 | #: src/ats/plugin_ats_mlp.c:2601 src/ats/plugin_ats_proportional.c:1141 | ||
453 | #: src/ats/plugin_ats_ril.c:2612 src/ats/plugin_ats_ril.c:2629 | ||
454 | #: src/ats/plugin_ats_ril.c:2646 src/ats/plugin_ats_ril.c:2663 | ||
455 | #: src/ats/plugin_ats_ril.c:2680 src/ats/plugin_ats_ril.c:2697 | ||
456 | #: src/ats/plugin_ats_ril.c:2714 src/ats/plugin_ats_ril.c:2731 | ||
457 | #, fuzzy, c-format | ||
458 | msgid "Invalid %s configuration %f \n" | ||
459 | msgstr "Không thể lưu tập tin cấu hình « %s »:" | ||
460 | |||
461 | #: src/ats/plugin_ats_mlp.c:2670 | ||
462 | #, c-format | ||
463 | msgid "" | ||
464 | "Adjusting inconsistent outbound quota configuration for network `%s', is " | ||
465 | "%llu must be at least %llu\n" | ||
466 | msgstr "" | ||
467 | |||
468 | #: src/ats/plugin_ats_mlp.c:2679 | ||
469 | #, c-format | ||
470 | msgid "" | ||
471 | "Adjusting inconsistent inbound quota configuration for network `%s', is %llu " | ||
472 | "must be at least %llu\n" | ||
473 | msgstr "" | ||
474 | |||
475 | #: src/ats/plugin_ats_mlp.c:2689 | ||
476 | #, c-format | ||
477 | msgid "" | ||
478 | "Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n" | ||
479 | msgstr "" | ||
480 | |||
481 | #: src/ats/plugin_ats_mlp.c:2698 | ||
482 | #, c-format | ||
483 | msgid "" | ||
484 | "Adjusting inbound quota configuration for network `%s' from %llu to %.0f\n" | ||
485 | msgstr "" | ||
486 | |||
487 | #: src/ats/plugin_ats_proportional.c:1164 | ||
488 | #, fuzzy, c-format | ||
489 | msgid "Invalid %s configuration %f\n" | ||
490 | msgstr "Không thể lưu tập tin cấu hình « %s »:" | ||
374 | 491 | ||
375 | #: src/ats-tests/ats-testing.c:422 | 492 | #: src/ats-tests/ats-testing.c:422 |
376 | #, c-format | 493 | #, c-format |
@@ -382,6 +499,16 @@ msgstr "" | |||
382 | msgid "Failed to connect master peer [%u] with slave [%u]\n" | 499 | msgid "Failed to connect master peer [%u] with slave [%u]\n" |
383 | msgstr "Lỗi kết nối đến gnunetd.\n" | 500 | msgstr "Lỗi kết nối đến gnunetd.\n" |
384 | 501 | ||
502 | #: src/ats-tests/ats-testing-log.c:837 | ||
503 | #, fuzzy | ||
504 | msgid "Stop logging\n" | ||
505 | msgstr "Theo dõi" | ||
506 | |||
507 | #: src/ats-tests/ats-testing-log.c:892 | ||
508 | #, fuzzy, c-format | ||
509 | msgid "Start logging `%s'\n" | ||
510 | msgstr "Đang bắt đầu tài về « %s »\n" | ||
511 | |||
385 | #: src/ats-tests/gnunet-ats-sim.c:90 | 512 | #: src/ats-tests/gnunet-ats-sim.c:90 |
386 | #, c-format | 513 | #, c-format |
387 | msgid "" | 514 | msgid "" |
@@ -389,15 +516,6 @@ msgid "" | |||
389 | "= %u KiB/s\n" | 516 | "= %u KiB/s\n" |
390 | msgstr "" | 517 | msgstr "" |
391 | 518 | ||
392 | #: src/ats-tests/gnunet-solver-eval.c:939 src/ats/gnunet-ats-solver-eval.c:3294 | ||
393 | msgid "solver to use" | ||
394 | msgstr "" | ||
395 | |||
396 | #: src/ats-tests/gnunet-solver-eval.c:945 | ||
397 | #: src/ats-tests/gnunet-solver-eval.c:950 src/ats/gnunet-ats-solver-eval.c:3299 | ||
398 | msgid "experiment to use" | ||
399 | msgstr "" | ||
400 | |||
401 | #: src/ats-tool/gnunet-ats.c:307 | 519 | #: src/ats-tool/gnunet-ats.c:307 |
402 | #, c-format | 520 | #, c-format |
403 | msgid "%u address resolutions had a timeout\n" | 521 | msgid "%u address resolutions had a timeout\n" |
@@ -520,124 +638,6 @@ msgstr "" | |||
520 | msgid "Print information about ATS state" | 638 | msgid "Print information about ATS state" |
521 | msgstr "In ra thông tin về các đồng đẳng GNUnet." | 639 | msgstr "In ra thông tin về các đồng đẳng GNUnet." |
522 | 640 | ||
523 | #: src/ats/gnunet-ats-solver-eval.c:2781 src/ats/gnunet-ats-solver-eval.c:2822 | ||
524 | #, c-format | ||
525 | msgid "" | ||
526 | "Could not load quota for network `%s': `%s', assigning default bandwidth " | ||
527 | "%llu\n" | ||
528 | msgstr "" | ||
529 | |||
530 | #: src/ats/gnunet-ats-solver-eval.c:2799 | ||
531 | #, c-format | ||
532 | msgid "" | ||
533 | "No outbound quota configured for network `%s', assigning default bandwidth " | ||
534 | "%llu\n" | ||
535 | msgstr "" | ||
536 | |||
537 | #: src/ats/gnunet-ats-solver-eval.c:2840 | ||
538 | #, c-format | ||
539 | msgid "" | ||
540 | "No outbound quota configure for network `%s', assigning default bandwidth " | ||
541 | "%llu\n" | ||
542 | msgstr "" | ||
543 | |||
544 | #: src/ats/gnunet-ats-solver-eval.c:3306 | ||
545 | #, fuzzy | ||
546 | msgid "print logging" | ||
547 | msgstr "Theo dõi" | ||
548 | |||
549 | #: src/ats/gnunet-ats-solver-eval.c:3311 | ||
550 | msgid "save logging to disk" | ||
551 | msgstr "" | ||
552 | |||
553 | #: src/ats/gnunet-ats-solver-eval.c:3316 | ||
554 | msgid "disable normalization" | ||
555 | msgstr "" | ||
556 | |||
557 | #: src/ats/gnunet-service-ats_plugins.c:304 | ||
558 | #, c-format | ||
559 | msgid "" | ||
560 | "Could not load %s quota for network `%s': `%s', assigning default bandwidth " | ||
561 | "%llu\n" | ||
562 | msgstr "" | ||
563 | |||
564 | #: src/ats/gnunet-service-ats_plugins.c:314 | ||
565 | #, c-format | ||
566 | msgid "%s quota configured for network `%s' is %llu\n" | ||
567 | msgstr "" | ||
568 | |||
569 | #: src/ats/gnunet-service-ats_plugins.c:359 | ||
570 | #, c-format | ||
571 | msgid "" | ||
572 | "No %s-quota configured for network `%s', assigning default bandwidth %llu\n" | ||
573 | msgstr "" | ||
574 | |||
575 | #: src/ats/gnunet-service-ats_plugins.c:451 | ||
576 | #, fuzzy, c-format | ||
577 | msgid "Failed to initialize solver `%s'!\n" | ||
578 | msgstr "Không thể sơ khởi SQLite: %s.\n" | ||
579 | |||
580 | #: src/ats/plugin_ats_mlp.c:1274 | ||
581 | msgid "Problem size too large, cannot allocate memory!\n" | ||
582 | msgstr "" | ||
583 | |||
584 | #: src/ats/plugin_ats_mlp.c:1869 | ||
585 | #, fuzzy, c-format | ||
586 | msgid "Adding address for peer `%s' multiple times\n" | ||
587 | msgstr "Không thể lấy địa chỉ của đồng đẳng « %s ».\n" | ||
588 | |||
589 | #: src/ats/plugin_ats_mlp.c:1913 | ||
590 | #, fuzzy, c-format | ||
591 | msgid "Updating address property for peer `%s' %p not added before\n" | ||
592 | msgstr "Không thể lấy địa chỉ của đồng đẳng « %s ».\n" | ||
593 | |||
594 | #: src/ats/plugin_ats_mlp.c:2475 | ||
595 | msgid "" | ||
596 | "MLP solver is not optimizing for anything, changing to feasibility check\n" | ||
597 | msgstr "" | ||
598 | |||
599 | #: src/ats/plugin_ats_mlp.c:2515 src/ats/plugin_ats_mlp.c:2532 | ||
600 | #: src/ats/plugin_ats_mlp.c:2564 src/ats/plugin_ats_mlp.c:2582 | ||
601 | #: src/ats/plugin_ats_mlp.c:2601 src/ats/plugin_ats_proportional.c:1141 | ||
602 | #: src/ats/plugin_ats_ril.c:2612 src/ats/plugin_ats_ril.c:2629 | ||
603 | #: src/ats/plugin_ats_ril.c:2646 src/ats/plugin_ats_ril.c:2663 | ||
604 | #: src/ats/plugin_ats_ril.c:2680 src/ats/plugin_ats_ril.c:2697 | ||
605 | #: src/ats/plugin_ats_ril.c:2714 src/ats/plugin_ats_ril.c:2731 | ||
606 | #, fuzzy, c-format | ||
607 | msgid "Invalid %s configuration %f \n" | ||
608 | msgstr "Không thể lưu tập tin cấu hình « %s »:" | ||
609 | |||
610 | #: src/ats/plugin_ats_mlp.c:2670 | ||
611 | #, c-format | ||
612 | msgid "" | ||
613 | "Adjusting inconsistent outbound quota configuration for network `%s', is " | ||
614 | "%llu must be at least %llu\n" | ||
615 | msgstr "" | ||
616 | |||
617 | #: src/ats/plugin_ats_mlp.c:2679 | ||
618 | #, c-format | ||
619 | msgid "" | ||
620 | "Adjusting inconsistent inbound quota configuration for network `%s', is %llu " | ||
621 | "must be at least %llu\n" | ||
622 | msgstr "" | ||
623 | |||
624 | #: src/ats/plugin_ats_mlp.c:2689 | ||
625 | #, c-format | ||
626 | msgid "" | ||
627 | "Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n" | ||
628 | msgstr "" | ||
629 | |||
630 | #: src/ats/plugin_ats_mlp.c:2698 | ||
631 | #, c-format | ||
632 | msgid "" | ||
633 | "Adjusting inbound quota configuration for network `%s' from %llu to %.0f\n" | ||
634 | msgstr "" | ||
635 | |||
636 | #: src/ats/plugin_ats_proportional.c:1164 | ||
637 | #, fuzzy, c-format | ||
638 | msgid "Invalid %s configuration %f\n" | ||
639 | msgstr "Không thể lưu tập tin cấu hình « %s »:" | ||
640 | |||
641 | #: src/auction/gnunet-auction-create.c:163 | 641 | #: src/auction/gnunet-auction-create.c:163 |
642 | msgid "description of the item to be sold" | 642 | msgid "description of the item to be sold" |
643 | msgstr "" | 643 | msgstr "" |
@@ -685,58 +685,58 @@ msgstr "" | |||
685 | msgid "Invalid peer ID `%s'\n" | 685 | msgid "Invalid peer ID `%s'\n" |
686 | msgstr "Dữ liệu nhập không hợp lệ.\n" | 686 | msgstr "Dữ liệu nhập không hợp lệ.\n" |
687 | 687 | ||
688 | #: src/cadet/gnunet-cadet.c:702 | 688 | #: src/cadet/gnunet-cadet.c:703 |
689 | #, fuzzy, c-format | 689 | #, fuzzy, c-format |
690 | msgid "Invalid tunnel owner `%s'\n" | 690 | msgid "Invalid tunnel owner `%s'\n" |
691 | msgstr "Địa chỉ IP định dạng sai: %s\n" | 691 | msgstr "Địa chỉ IP định dạng sai: %s\n" |
692 | 692 | ||
693 | #: src/cadet/gnunet-cadet.c:775 | 693 | #: src/cadet/gnunet-cadet.c:776 |
694 | msgid "Extra arguments are not applicable in combination with this option.\n" | 694 | msgid "Extra arguments are not applicable in combination with this option.\n" |
695 | msgstr "" | 695 | msgstr "" |
696 | 696 | ||
697 | #: src/cadet/gnunet-cadet.c:866 | 697 | #: src/cadet/gnunet-cadet.c:867 |
698 | #, fuzzy, c-format | 698 | #, fuzzy, c-format |
699 | msgid "Invalid target `%s'\n" | 699 | msgid "Invalid target `%s'\n" |
700 | msgstr "Đối số không hợp lệ cho « %s ».\n" | 700 | msgstr "Đối số không hợp lệ cho « %s ».\n" |
701 | 701 | ||
702 | #: src/cadet/gnunet-cadet.c:903 | 702 | #: src/cadet/gnunet-cadet.c:904 |
703 | #, fuzzy | 703 | #, fuzzy |
704 | msgid "No action requested\n" | 704 | msgid "No action requested\n" |
705 | msgstr "Thu thập bị dừng.\n" | 705 | msgstr "Thu thập bị dừng.\n" |
706 | 706 | ||
707 | #: src/cadet/gnunet-cadet.c:928 | 707 | #: src/cadet/gnunet-cadet.c:929 |
708 | #, fuzzy | 708 | #, fuzzy |
709 | msgid "Provide information about a particular connection" | 709 | msgid "Provide information about a particular connection" |
710 | msgstr "In ra thông tin về các đồng đẳng GNUnet." | 710 | msgstr "In ra thông tin về các đồng đẳng GNUnet." |
711 | 711 | ||
712 | #: src/cadet/gnunet-cadet.c:933 | 712 | #: src/cadet/gnunet-cadet.c:934 |
713 | msgid "Activate echo mode" | 713 | msgid "Activate echo mode" |
714 | msgstr "" | 714 | msgstr "" |
715 | 715 | ||
716 | #: src/cadet/gnunet-cadet.c:938 | 716 | #: src/cadet/gnunet-cadet.c:939 |
717 | msgid "Dump debug information to STDERR" | 717 | msgid "Dump debug information to STDERR" |
718 | msgstr "" | 718 | msgstr "" |
719 | 719 | ||
720 | #: src/cadet/gnunet-cadet.c:944 | 720 | #: src/cadet/gnunet-cadet.c:945 |
721 | msgid "Listen for connections using a shared secret among sender and recipient" | 721 | msgid "Listen for connections using a shared secret among sender and recipient" |
722 | msgstr "" | 722 | msgstr "" |
723 | 723 | ||
724 | #: src/cadet/gnunet-cadet.c:951 | 724 | #: src/cadet/gnunet-cadet.c:952 |
725 | #, fuzzy | 725 | #, fuzzy |
726 | msgid "Provide information about a patricular peer" | 726 | msgid "Provide information about a patricular peer" |
727 | msgstr "In ra thông tin về các đồng đẳng GNUnet." | 727 | msgstr "In ra thông tin về các đồng đẳng GNUnet." |
728 | 728 | ||
729 | #: src/cadet/gnunet-cadet.c:957 | 729 | #: src/cadet/gnunet-cadet.c:958 |
730 | #, fuzzy | 730 | #, fuzzy |
731 | msgid "Provide information about all peers" | 731 | msgid "Provide information about all peers" |
732 | msgstr "In ra thông tin về các đồng đẳng GNUnet." | 732 | msgstr "In ra thông tin về các đồng đẳng GNUnet." |
733 | 733 | ||
734 | #: src/cadet/gnunet-cadet.c:963 | 734 | #: src/cadet/gnunet-cadet.c:964 |
735 | #, fuzzy | 735 | #, fuzzy |
736 | msgid "Provide information about a particular tunnel" | 736 | msgid "Provide information about a particular tunnel" |
737 | msgstr "In ra thông tin về các đồng đẳng GNUnet." | 737 | msgstr "In ra thông tin về các đồng đẳng GNUnet." |
738 | 738 | ||
739 | #: src/cadet/gnunet-cadet.c:969 | 739 | #: src/cadet/gnunet-cadet.c:970 |
740 | #, fuzzy | 740 | #, fuzzy |
741 | msgid "Provide information about all tunnels" | 741 | msgid "Provide information about all tunnels" |
742 | msgstr "In ra thông tin về các đồng đẳng GNUnet." | 742 | msgstr "In ra thông tin về các đồng đẳng GNUnet." |
@@ -786,28 +786,6 @@ msgstr "" | |||
786 | msgid "Connection to conversation service lost, trying to reconnect\n" | 786 | msgid "Connection to conversation service lost, trying to reconnect\n" |
787 | msgstr "" | 787 | msgstr "" |
788 | 788 | ||
789 | #: src/conversation/gnunet-conversation-test.c:119 | ||
790 | #, c-format | ||
791 | msgid "" | ||
792 | "\n" | ||
793 | "End of transmission. Have a GNU day.\n" | ||
794 | msgstr "" | ||
795 | |||
796 | #: src/conversation/gnunet-conversation-test.c:145 | ||
797 | #, c-format | ||
798 | msgid "" | ||
799 | "\n" | ||
800 | "We are now playing your recording back. If you can hear it, your audio " | ||
801 | "settings are working..." | ||
802 | msgstr "" | ||
803 | |||
804 | #: src/conversation/gnunet-conversation-test.c:210 | ||
805 | #, c-format | ||
806 | msgid "" | ||
807 | "We will now be recording you for %s. After that time, the recording will be " | ||
808 | "played back to you..." | ||
809 | msgstr "" | ||
810 | |||
811 | #: src/conversation/gnunet-conversation.c:269 | 789 | #: src/conversation/gnunet-conversation.c:269 |
812 | #, c-format | 790 | #, c-format |
813 | msgid "Incoming call from `%s'. Please /accept %u or /cancel %u the call.\n" | 791 | msgid "Incoming call from `%s'. Please /accept %u or /cancel %u the call.\n" |
@@ -1065,8 +1043,30 @@ msgstr "" | |||
1065 | msgid "Enables having a conversation with other GNUnet users." | 1043 | msgid "Enables having a conversation with other GNUnet users." |
1066 | msgstr "" | 1044 | msgstr "" |
1067 | 1045 | ||
1068 | #: src/conversation/gnunet-helper-audio-playback-gst.c:356 | 1046 | #: src/conversation/gnunet-conversation-test.c:119 |
1047 | #, c-format | ||
1048 | msgid "" | ||
1049 | "\n" | ||
1050 | "End of transmission. Have a GNU day.\n" | ||
1051 | msgstr "" | ||
1052 | |||
1053 | #: src/conversation/gnunet-conversation-test.c:145 | ||
1054 | #, c-format | ||
1055 | msgid "" | ||
1056 | "\n" | ||
1057 | "We are now playing your recording back. If you can hear it, your audio " | ||
1058 | "settings are working..." | ||
1059 | msgstr "" | ||
1060 | |||
1061 | #: src/conversation/gnunet-conversation-test.c:210 | ||
1062 | #, c-format | ||
1063 | msgid "" | ||
1064 | "We will now be recording you for %s. After that time, the recording will be " | ||
1065 | "played back to you..." | ||
1066 | msgstr "" | ||
1067 | |||
1069 | #: src/conversation/gnunet_gst.c:622 | 1068 | #: src/conversation/gnunet_gst.c:622 |
1069 | #: src/conversation/gnunet-helper-audio-playback-gst.c:361 | ||
1070 | #, c-format | 1070 | #, c-format |
1071 | msgid "Read error from STDIN: %d %s\n" | 1071 | msgid "Read error from STDIN: %d %s\n" |
1072 | msgstr "" | 1072 | msgstr "" |
@@ -1076,63 +1076,63 @@ msgstr "" | |||
1076 | msgid "pa_stream_write() failed: %s\n" | 1076 | msgid "pa_stream_write() failed: %s\n" |
1077 | msgstr "SMTP: « %s » bị lỗi: %s\n" | 1077 | msgstr "SMTP: « %s » bị lỗi: %s\n" |
1078 | 1078 | ||
1079 | #: src/conversation/gnunet-helper-audio-playback.c:607 | 1079 | #: src/conversation/gnunet-helper-audio-playback.c:612 |
1080 | msgid "gnunet-helper-audio-playback - Got signal, exiting\n" | 1080 | msgid "gnunet-helper-audio-playback - Got signal, exiting\n" |
1081 | msgstr "" | 1081 | msgstr "" |
1082 | 1082 | ||
1083 | #: src/conversation/gnunet-helper-audio-playback.c:632 | 1083 | #: src/conversation/gnunet-helper-audio-playback.c:637 |
1084 | #: src/conversation/gnunet-helper-audio-record.c:545 | 1084 | #: src/conversation/gnunet-helper-audio-record.c:545 |
1085 | #, fuzzy | 1085 | #, fuzzy |
1086 | msgid "Connection established.\n" | 1086 | msgid "Connection established.\n" |
1087 | msgstr "Thu thập bị dừng.\n" | 1087 | msgstr "Thu thập bị dừng.\n" |
1088 | 1088 | ||
1089 | #: src/conversation/gnunet-helper-audio-playback.c:637 | 1089 | #: src/conversation/gnunet-helper-audio-playback.c:642 |
1090 | #: src/conversation/gnunet-helper-audio-record.c:550 | 1090 | #: src/conversation/gnunet-helper-audio-record.c:550 |
1091 | #, fuzzy, c-format | 1091 | #, fuzzy, c-format |
1092 | msgid "pa_stream_new() failed: %s\n" | 1092 | msgid "pa_stream_new() failed: %s\n" |
1093 | msgstr "SMTP: « %s » bị lỗi: %s\n" | 1093 | msgstr "SMTP: « %s » bị lỗi: %s\n" |
1094 | 1094 | ||
1095 | #: src/conversation/gnunet-helper-audio-playback.c:651 | 1095 | #: src/conversation/gnunet-helper-audio-playback.c:656 |
1096 | #, c-format | 1096 | #, c-format |
1097 | msgid "pa_stream_connect_playback() failed: %s\n" | 1097 | msgid "pa_stream_connect_playback() failed: %s\n" |
1098 | msgstr "" | 1098 | msgstr "" |
1099 | 1099 | ||
1100 | #: src/conversation/gnunet-helper-audio-playback.c:664 | 1100 | #: src/conversation/gnunet-helper-audio-playback.c:669 |
1101 | #: src/conversation/gnunet-helper-audio-record.c:576 | 1101 | #: src/conversation/gnunet-helper-audio-record.c:576 |
1102 | #, fuzzy, c-format | 1102 | #, fuzzy, c-format |
1103 | msgid "Connection failure: %s\n" | 1103 | msgid "Connection failure: %s\n" |
1104 | msgstr "%s bị lỗi tại %s:%d: « %s »\n" | 1104 | msgstr "%s bị lỗi tại %s:%d: « %s »\n" |
1105 | 1105 | ||
1106 | #: src/conversation/gnunet-helper-audio-playback.c:685 | 1106 | #: src/conversation/gnunet-helper-audio-playback.c:690 |
1107 | #: src/conversation/gnunet-helper-audio-record.c:599 | 1107 | #: src/conversation/gnunet-helper-audio-record.c:599 |
1108 | msgid "Wrong Spec\n" | 1108 | msgid "Wrong Spec\n" |
1109 | msgstr "" | 1109 | msgstr "" |
1110 | 1110 | ||
1111 | #: src/conversation/gnunet-helper-audio-playback.c:691 | 1111 | #: src/conversation/gnunet-helper-audio-playback.c:696 |
1112 | #: src/conversation/gnunet-helper-audio-record.c:605 | 1112 | #: src/conversation/gnunet-helper-audio-record.c:605 |
1113 | #, fuzzy | 1113 | #, fuzzy |
1114 | msgid "pa_mainloop_new() failed.\n" | 1114 | msgid "pa_mainloop_new() failed.\n" |
1115 | msgstr "Lỗi nội bộ : khẳng định không thành công tại %s:%d.\n" | 1115 | msgstr "Lỗi nội bộ : khẳng định không thành công tại %s:%d.\n" |
1116 | 1116 | ||
1117 | #: src/conversation/gnunet-helper-audio-playback.c:705 | 1117 | #: src/conversation/gnunet-helper-audio-playback.c:710 |
1118 | #: src/conversation/gnunet-helper-audio-record.c:620 | 1118 | #: src/conversation/gnunet-helper-audio-record.c:620 |
1119 | #, fuzzy | 1119 | #, fuzzy |
1120 | msgid "pa_context_new() failed.\n" | 1120 | msgid "pa_context_new() failed.\n" |
1121 | msgstr "Lỗi nội bộ : khẳng định không thành công tại %s:%d.\n" | 1121 | msgstr "Lỗi nội bộ : khẳng định không thành công tại %s:%d.\n" |
1122 | 1122 | ||
1123 | #: src/conversation/gnunet-helper-audio-playback.c:712 | 1123 | #: src/conversation/gnunet-helper-audio-playback.c:717 |
1124 | #: src/conversation/gnunet-helper-audio-record.c:626 | 1124 | #: src/conversation/gnunet-helper-audio-record.c:626 |
1125 | #, fuzzy, c-format | 1125 | #, fuzzy, c-format |
1126 | msgid "pa_context_connect() failed: %s\n" | 1126 | msgid "pa_context_connect() failed: %s\n" |
1127 | msgstr "# của các đồng đẳng đã kết nối" | 1127 | msgstr "# của các đồng đẳng đã kết nối" |
1128 | 1128 | ||
1129 | #: src/conversation/gnunet-helper-audio-playback.c:718 | 1129 | #: src/conversation/gnunet-helper-audio-playback.c:723 |
1130 | #: src/conversation/gnunet-helper-audio-record.c:632 | 1130 | #: src/conversation/gnunet-helper-audio-record.c:632 |
1131 | #, fuzzy | 1131 | #, fuzzy |
1132 | msgid "pa_mainloop_run() failed.\n" | 1132 | msgid "pa_mainloop_run() failed.\n" |
1133 | msgstr "Lỗi nội bộ : khẳng định không thành công tại %s:%d.\n" | 1133 | msgstr "Lỗi nội bộ : khẳng định không thành công tại %s:%d.\n" |
1134 | 1134 | ||
1135 | #: src/conversation/gnunet-helper-audio-playback.c:790 | 1135 | #: src/conversation/gnunet-helper-audio-playback.c:795 |
1136 | #, c-format | 1136 | #, c-format |
1137 | msgid "Read error from STDIN: %s\n" | 1137 | msgid "Read error from STDIN: %s\n" |
1138 | msgstr "" | 1138 | msgstr "" |
@@ -1201,7 +1201,7 @@ msgstr "Lỗi tạo thư mục tạm thời." | |||
1201 | msgid "Could not open line, port %s already in use!\n" | 1201 | msgid "Could not open line, port %s already in use!\n" |
1202 | msgstr "Không thể kết nối tới %s:%u: %s\n" | 1202 | msgstr "Không thể kết nối tới %s:%u: %s\n" |
1203 | 1203 | ||
1204 | #: src/conversation/microphone.c:119 | 1204 | #: src/conversation/microphone.c:121 |
1205 | #, fuzzy | 1205 | #, fuzzy |
1206 | msgid "Could not start record audio helper\n" | 1206 | msgid "Could not start record audio helper\n" |
1207 | msgstr "Không thể truy cập đến thông tin về không gian tên.\n" | 1207 | msgstr "Không thể truy cập đến thông tin về không gian tên.\n" |
@@ -1293,27 +1293,27 @@ msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải" | |||
1293 | msgid "# dequeuing CAR (duplicate request)" | 1293 | msgid "# dequeuing CAR (duplicate request)" |
1294 | msgstr "" | 1294 | msgstr "" |
1295 | 1295 | ||
1296 | #: src/core/gnunet-service-core.c:440 | 1296 | #: src/core/gnunet-service-core.c:443 |
1297 | #, fuzzy, c-format | 1297 | #, fuzzy, c-format |
1298 | msgid "# bytes of messages of type %u received" | 1298 | msgid "# bytes of messages of type %u received" |
1299 | msgstr "# các byte nhiễu được nhận" | 1299 | msgstr "# các byte nhiễu được nhận" |
1300 | 1300 | ||
1301 | #: src/core/gnunet-service-core.c:538 | 1301 | #: src/core/gnunet-service-core.c:541 |
1302 | #, fuzzy | 1302 | #, fuzzy |
1303 | msgid "# messages discarded (session disconnected)" | 1303 | msgid "# messages discarded (session disconnected)" |
1304 | msgstr "# các thông báo được chắp liền" | 1304 | msgstr "# các thông báo được chắp liền" |
1305 | 1305 | ||
1306 | #: src/core/gnunet-service-core.c:876 | 1306 | #: src/core/gnunet-service-core.c:879 |
1307 | #, fuzzy, c-format | 1307 | #, fuzzy, c-format |
1308 | msgid "# messages of type %u discarded (client busy)" | 1308 | msgid "# messages of type %u discarded (client busy)" |
1309 | msgstr "# các byte nhiễu được nhận" | 1309 | msgstr "# các byte nhiễu được nhận" |
1310 | 1310 | ||
1311 | #: src/core/gnunet-service-core.c:985 | 1311 | #: src/core/gnunet-service-core.c:988 |
1312 | #, fuzzy | 1312 | #, fuzzy |
1313 | msgid "Core service is lacking HOSTKEY configuration setting. Exiting.\n" | 1313 | msgid "Core service is lacking HOSTKEY configuration setting. Exiting.\n" |
1314 | msgstr "Lưu cấu hình ngay bây giờ không?" | 1314 | msgstr "Lưu cấu hình ngay bây giờ không?" |
1315 | 1315 | ||
1316 | #: src/core/gnunet-service-core.c:1006 | 1316 | #: src/core/gnunet-service-core.c:1009 |
1317 | #, fuzzy, c-format | 1317 | #, fuzzy, c-format |
1318 | msgid "Core service of `%s' ready.\n" | 1318 | msgid "Core service of `%s' ready.\n" |
1319 | msgstr "Không gian tên « %s » có đánh giá %d.\n" | 1319 | msgstr "Không gian tên « %s » có đánh giá %d.\n" |
@@ -1326,146 +1326,146 @@ msgstr "# các byte đã mã hoá" | |||
1326 | msgid "# bytes decrypted" | 1326 | msgid "# bytes decrypted" |
1327 | msgstr "# các byte đã giải mã" | 1327 | msgstr "# các byte đã giải mã" |
1328 | 1328 | ||
1329 | #: src/core/gnunet-service-core_kx.c:725 | 1329 | #: src/core/gnunet-service-core_kx.c:728 |
1330 | #, fuzzy | 1330 | #, fuzzy |
1331 | msgid "# PAYLOAD dropped (out of order)" | 1331 | msgid "# PAYLOAD dropped (out of order)" |
1332 | msgstr "# các byte loại bỏ bởi UDP (đi ra)" | 1332 | msgstr "# các byte loại bỏ bởi UDP (đi ra)" |
1333 | 1333 | ||
1334 | #: src/core/gnunet-service-core_kx.c:775 | 1334 | #: src/core/gnunet-service-core_kx.c:778 |
1335 | msgid "# key exchanges initiated" | 1335 | msgid "# key exchanges initiated" |
1336 | msgstr "" | 1336 | msgstr "" |
1337 | 1337 | ||
1338 | #: src/core/gnunet-service-core_kx.c:837 | 1338 | #: src/core/gnunet-service-core_kx.c:840 |
1339 | msgid "# key exchanges stopped" | 1339 | msgid "# key exchanges stopped" |
1340 | msgstr "" | 1340 | msgstr "" |
1341 | 1341 | ||
1342 | #: src/core/gnunet-service-core_kx.c:871 | 1342 | #: src/core/gnunet-service-core_kx.c:874 |
1343 | #, fuzzy | 1343 | #, fuzzy |
1344 | msgid "# PING messages transmitted" | 1344 | msgid "# PING messages transmitted" |
1345 | msgstr "# các thông báo PING được tạo" | 1345 | msgstr "# các thông báo PING được tạo" |
1346 | 1346 | ||
1347 | #: src/core/gnunet-service-core_kx.c:938 | 1347 | #: src/core/gnunet-service-core_kx.c:941 |
1348 | msgid "# old ephemeral keys ignored" | 1348 | msgid "# old ephemeral keys ignored" |
1349 | msgstr "" | 1349 | msgstr "" |
1350 | 1350 | ||
1351 | #: src/core/gnunet-service-core_kx.c:945 | 1351 | #: src/core/gnunet-service-core_kx.c:948 |
1352 | #, fuzzy | 1352 | #, fuzzy |
1353 | msgid "# ephemeral keys received" | 1353 | msgid "# ephemeral keys received" |
1354 | msgstr "# các thông báo phát hiện dht được nhận" | 1354 | msgstr "# các thông báo phát hiện dht được nhận" |
1355 | 1355 | ||
1356 | #: src/core/gnunet-service-core_kx.c:984 | 1356 | #: src/core/gnunet-service-core_kx.c:987 |
1357 | #, c-format | 1357 | #, c-format |
1358 | msgid "" | 1358 | msgid "" |
1359 | "Ephemeral key message from peer `%s' rejected as its validity range does not " | 1359 | "Ephemeral key message from peer `%s' rejected as its validity range does not " |
1360 | "match our system time (%llu not in [%llu,%llu]).\n" | 1360 | "match our system time (%llu not in [%llu,%llu]).\n" |
1361 | msgstr "" | 1361 | msgstr "" |
1362 | 1362 | ||
1363 | #: src/core/gnunet-service-core_kx.c:995 | 1363 | #: src/core/gnunet-service-core_kx.c:998 |
1364 | #, fuzzy | 1364 | #, fuzzy |
1365 | msgid "# EPHEMERAL_KEY messages received" | 1365 | msgid "# EPHEMERAL_KEY messages received" |
1366 | msgstr "# các thông báo được chắp liền" | 1366 | msgstr "# các thông báo được chắp liền" |
1367 | 1367 | ||
1368 | #: src/core/gnunet-service-core_kx.c:1091 | 1368 | #: src/core/gnunet-service-core_kx.c:1094 |
1369 | #: src/transport/gnunet-service-transport_validation.c:1119 | 1369 | #: src/transport/gnunet-service-transport_validation.c:1128 |
1370 | #, fuzzy | 1370 | #, fuzzy |
1371 | msgid "# PING messages received" | 1371 | msgid "# PING messages received" |
1372 | msgstr "# các thông báo PING được tạo" | 1372 | msgstr "# các thông báo PING được tạo" |
1373 | 1373 | ||
1374 | #: src/core/gnunet-service-core_kx.c:1100 | 1374 | #: src/core/gnunet-service-core_kx.c:1103 |
1375 | #, fuzzy | 1375 | #, fuzzy |
1376 | msgid "# PING messages dropped (out of order)" | 1376 | msgid "# PING messages dropped (out of order)" |
1377 | msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải" | 1377 | msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải" |
1378 | 1378 | ||
1379 | #: src/core/gnunet-service-core_kx.c:1158 | 1379 | #: src/core/gnunet-service-core_kx.c:1161 |
1380 | #, fuzzy | 1380 | #, fuzzy |
1381 | msgid "# PONG messages created" | 1381 | msgid "# PONG messages created" |
1382 | msgstr "# các thông báo PING được tạo" | 1382 | msgstr "# các thông báo PING được tạo" |
1383 | 1383 | ||
1384 | #: src/core/gnunet-service-core_kx.c:1184 | 1384 | #: src/core/gnunet-service-core_kx.c:1187 |
1385 | #, fuzzy | 1385 | #, fuzzy |
1386 | msgid "# sessions terminated by timeout" | 1386 | msgid "# sessions terminated by timeout" |
1387 | msgstr "# các byte loại đi bởi TCP (đi ra)" | 1387 | msgstr "# các byte loại đi bởi TCP (đi ra)" |
1388 | 1388 | ||
1389 | #: src/core/gnunet-service-core_kx.c:1197 | 1389 | #: src/core/gnunet-service-core_kx.c:1200 |
1390 | #, fuzzy | 1390 | #, fuzzy |
1391 | msgid "# keepalive messages sent" | 1391 | msgid "# keepalive messages sent" |
1392 | msgstr "# các thông báo PING nhập thô được gửi" | 1392 | msgstr "# các thông báo PING nhập thô được gửi" |
1393 | 1393 | ||
1394 | #: src/core/gnunet-service-core_kx.c:1261 | 1394 | #: src/core/gnunet-service-core_kx.c:1264 |
1395 | #: src/transport/gnunet-service-transport_validation.c:1442 | 1395 | #: src/transport/gnunet-service-transport_validation.c:1461 |
1396 | #, fuzzy | 1396 | #, fuzzy |
1397 | msgid "# PONG messages received" | 1397 | msgid "# PONG messages received" |
1398 | msgstr "# các thông báo PONG đã mật mã được nhận" | 1398 | msgstr "# các thông báo PONG đã mật mã được nhận" |
1399 | 1399 | ||
1400 | #: src/core/gnunet-service-core_kx.c:1268 | 1400 | #: src/core/gnunet-service-core_kx.c:1271 |
1401 | #, fuzzy | 1401 | #, fuzzy |
1402 | msgid "# PONG messages dropped (connection down)" | 1402 | msgid "# PONG messages dropped (connection down)" |
1403 | msgstr "# các thông báo PONG đã mật mã được nhận" | 1403 | msgstr "# các thông báo PONG đã mật mã được nhận" |
1404 | 1404 | ||
1405 | #: src/core/gnunet-service-core_kx.c:1273 | 1405 | #: src/core/gnunet-service-core_kx.c:1276 |
1406 | #, fuzzy | 1406 | #, fuzzy |
1407 | msgid "# PONG messages dropped (out of order)" | 1407 | msgid "# PONG messages dropped (out of order)" |
1408 | msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải" | 1408 | msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải" |
1409 | 1409 | ||
1410 | #: src/core/gnunet-service-core_kx.c:1308 | 1410 | #: src/core/gnunet-service-core_kx.c:1311 |
1411 | #, fuzzy | 1411 | #, fuzzy |
1412 | msgid "# PONG messages decrypted" | 1412 | msgid "# PONG messages decrypted" |
1413 | msgstr "# các thông báo PING được tạo" | 1413 | msgstr "# các thông báo PING được tạo" |
1414 | 1414 | ||
1415 | #: src/core/gnunet-service-core_kx.c:1346 | 1415 | #: src/core/gnunet-service-core_kx.c:1349 |
1416 | #, fuzzy | 1416 | #, fuzzy |
1417 | msgid "# session keys confirmed via PONG" | 1417 | msgid "# session keys confirmed via PONG" |
1418 | msgstr "# Các quảng cáo đồng đẳng được xác nhận qua PONG" | 1418 | msgstr "# Các quảng cáo đồng đẳng được xác nhận qua PONG" |
1419 | 1419 | ||
1420 | #: src/core/gnunet-service-core_kx.c:1357 | 1420 | #: src/core/gnunet-service-core_kx.c:1360 |
1421 | #, fuzzy | 1421 | #, fuzzy |
1422 | msgid "# timeouts prevented via PONG" | 1422 | msgid "# timeouts prevented via PONG" |
1423 | msgstr "# các byte đã nhận qua TCP" | 1423 | msgstr "# các byte đã nhận qua TCP" |
1424 | 1424 | ||
1425 | #: src/core/gnunet-service-core_kx.c:1364 | 1425 | #: src/core/gnunet-service-core_kx.c:1367 |
1426 | #, fuzzy | 1426 | #, fuzzy |
1427 | msgid "# rekey operations confirmed via PONG" | 1427 | msgid "# rekey operations confirmed via PONG" |
1428 | msgstr "# Các quảng cáo đồng đẳng được xác nhận qua PONG" | 1428 | msgstr "# Các quảng cáo đồng đẳng được xác nhận qua PONG" |
1429 | 1429 | ||
1430 | #: src/core/gnunet-service-core_kx.c:1518 | 1430 | #: src/core/gnunet-service-core_kx.c:1521 |
1431 | #, fuzzy | 1431 | #, fuzzy |
1432 | msgid "# DATA message dropped (out of order)" | 1432 | msgid "# DATA message dropped (out of order)" |
1433 | msgstr "# các byte loại bỏ bởi UDP (đi ra)" | 1433 | msgstr "# các byte loại bỏ bởi UDP (đi ra)" |
1434 | 1434 | ||
1435 | #: src/core/gnunet-service-core_kx.c:1526 | 1435 | #: src/core/gnunet-service-core_kx.c:1529 |
1436 | #, c-format | 1436 | #, c-format |
1437 | msgid "" | 1437 | msgid "" |
1438 | "Session to peer `%s' went down due to key expiration (should not happen)\n" | 1438 | "Session to peer `%s' went down due to key expiration (should not happen)\n" |
1439 | msgstr "" | 1439 | msgstr "" |
1440 | 1440 | ||
1441 | #: src/core/gnunet-service-core_kx.c:1529 | 1441 | #: src/core/gnunet-service-core_kx.c:1532 |
1442 | #, fuzzy | 1442 | #, fuzzy |
1443 | msgid "# sessions terminated by key expiration" | 1443 | msgid "# sessions terminated by key expiration" |
1444 | msgstr "# các byte loại đi bởi TCP (đi ra)" | 1444 | msgstr "# các byte loại đi bởi TCP (đi ra)" |
1445 | 1445 | ||
1446 | #: src/core/gnunet-service-core_kx.c:1590 | 1446 | #: src/core/gnunet-service-core_kx.c:1593 |
1447 | #: src/core/gnunet-service-core_kx.c:1616 | 1447 | #: src/core/gnunet-service-core_kx.c:1619 |
1448 | #, fuzzy | 1448 | #, fuzzy |
1449 | msgid "# bytes dropped (duplicates)" | 1449 | msgid "# bytes dropped (duplicates)" |
1450 | msgstr "# các byte loại bỏ bởi UDP (đi ra)" | 1450 | msgstr "# các byte loại bỏ bởi UDP (đi ra)" |
1451 | 1451 | ||
1452 | #: src/core/gnunet-service-core_kx.c:1603 | 1452 | #: src/core/gnunet-service-core_kx.c:1606 |
1453 | #, fuzzy | 1453 | #, fuzzy |
1454 | msgid "# bytes dropped (out of sequence)" | 1454 | msgid "# bytes dropped (out of sequence)" |
1455 | msgstr "# các byte loại bỏ bởi UDP (đi ra)" | 1455 | msgstr "# các byte loại bỏ bởi UDP (đi ra)" |
1456 | 1456 | ||
1457 | #: src/core/gnunet-service-core_kx.c:1645 | 1457 | #: src/core/gnunet-service-core_kx.c:1648 |
1458 | #, fuzzy | 1458 | #, fuzzy |
1459 | msgid "# bytes dropped (ancient message)" | 1459 | msgid "# bytes dropped (ancient message)" |
1460 | msgstr "# các byte loại bỏ bởi UDP (đi ra)" | 1460 | msgstr "# các byte loại bỏ bởi UDP (đi ra)" |
1461 | 1461 | ||
1462 | #: src/core/gnunet-service-core_kx.c:1653 | 1462 | #: src/core/gnunet-service-core_kx.c:1656 |
1463 | #, fuzzy | 1463 | #, fuzzy |
1464 | msgid "# bytes of payload decrypted" | 1464 | msgid "# bytes of payload decrypted" |
1465 | msgstr "# các byte đã giải mã" | 1465 | msgstr "# các byte đã giải mã" |
1466 | 1466 | ||
1467 | #: src/core/gnunet-service-core_sessions.c:266 | 1467 | #: src/core/gnunet-service-core_sessions.c:260 |
1468 | #: src/core/gnunet-service-core_sessions.c:356 | 1468 | #: src/core/gnunet-service-core_sessions.c:350 |
1469 | #: src/dht/gnunet-service-dht_neighbours.c:733 | 1469 | #: src/dht/gnunet-service-dht_neighbours.c:733 |
1470 | #: src/dht/gnunet-service-dht_neighbours.c:795 | 1470 | #: src/dht/gnunet-service-dht_neighbours.c:795 |
1471 | #: src/fs/gnunet-service-fs_cp.c:615 src/fs/gnunet-service-fs_cp.c:1520 | 1471 | #: src/fs/gnunet-service-fs_cp.c:615 src/fs/gnunet-service-fs_cp.c:1520 |
@@ -1477,17 +1477,17 @@ msgstr "# các byte đã giải mã" | |||
1477 | msgid "# peers connected" | 1477 | msgid "# peers connected" |
1478 | msgstr "# của các đồng đẳng đã kết nối" | 1478 | msgstr "# của các đồng đẳng đã kết nối" |
1479 | 1479 | ||
1480 | #: src/core/gnunet-service-core_sessions.c:302 | 1480 | #: src/core/gnunet-service-core_sessions.c:296 |
1481 | #, fuzzy | 1481 | #, fuzzy |
1482 | msgid "# type map refreshes sent" | 1482 | msgid "# type map refreshes sent" |
1483 | msgstr "# tổng số yêu cầu lỗ hổng được gửi" | 1483 | msgstr "# tổng số yêu cầu lỗ hổng được gửi" |
1484 | 1484 | ||
1485 | #: src/core/gnunet-service-core_sessions.c:422 | 1485 | #: src/core/gnunet-service-core_sessions.c:416 |
1486 | #, fuzzy | 1486 | #, fuzzy |
1487 | msgid "# outdated typemap confirmations received" | 1487 | msgid "# outdated typemap confirmations received" |
1488 | msgstr "Lỗi lưu cấu hình." | 1488 | msgstr "Lỗi lưu cấu hình." |
1489 | 1489 | ||
1490 | #: src/core/gnunet-service-core_sessions.c:439 | 1490 | #: src/core/gnunet-service-core_sessions.c:433 |
1491 | #, fuzzy | 1491 | #, fuzzy |
1492 | msgid "# valid typemap confirmations received" | 1492 | msgid "# valid typemap confirmations received" |
1493 | msgstr "Lỗi lưu cấu hình." | 1493 | msgstr "Lỗi lưu cấu hình." |
@@ -1502,138 +1502,6 @@ msgstr "# các thông báo phát hiện dht được nhận" | |||
1502 | msgid "# updates to my type map" | 1502 | msgid "# updates to my type map" |
1503 | msgstr "" | 1503 | msgstr "" |
1504 | 1504 | ||
1505 | #: src/credential/credential_misc.c:88 | ||
1506 | #, fuzzy, c-format | ||
1507 | msgid "Unable to parse CRED record string `%s'\n" | ||
1508 | msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" | ||
1509 | |||
1510 | #: src/credential/gnunet-credential.c:278 src/namestore/gnunet-namestore.c:776 | ||
1511 | #: src/namestore/plugin_rest_namestore.c:1009 | ||
1512 | #, c-format | ||
1513 | msgid "Ego `%s' not known to identity service\n" | ||
1514 | msgstr "" | ||
1515 | |||
1516 | #: src/credential/gnunet-credential.c:294 | ||
1517 | #: src/credential/gnunet-credential.c:446 | ||
1518 | #, fuzzy, c-format | ||
1519 | msgid "Issuer public key `%s' is not well-formed\n" | ||
1520 | msgstr "Đối số không hợp lệ cho « %s ».\n" | ||
1521 | |||
1522 | #: src/credential/gnunet-credential.c:375 | ||
1523 | #: src/credential/gnunet-credential.c:435 | ||
1524 | #, fuzzy, c-format | ||
1525 | msgid "Issuer public key not well-formed\n" | ||
1526 | msgstr "Đối số không hợp lệ cho « %s ».\n" | ||
1527 | |||
1528 | #: src/credential/gnunet-credential.c:386 | ||
1529 | #: src/credential/gnunet-credential.c:455 | ||
1530 | #, fuzzy, c-format | ||
1531 | msgid "Failed to connect to CREDENTIAL\n" | ||
1532 | msgstr "Lỗi kết nối đến gnunetd.\n" | ||
1533 | |||
1534 | #: src/credential/gnunet-credential.c:392 | ||
1535 | #, c-format | ||
1536 | msgid "You must provide issuer the attribute\n" | ||
1537 | msgstr "" | ||
1538 | |||
1539 | #: src/credential/gnunet-credential.c:399 | ||
1540 | #, c-format | ||
1541 | msgid "ego required\n" | ||
1542 | msgstr "" | ||
1543 | |||
1544 | #: src/credential/gnunet-credential.c:415 | ||
1545 | #, c-format | ||
1546 | msgid "Subject public key needed\n" | ||
1547 | msgstr "" | ||
1548 | |||
1549 | #: src/credential/gnunet-credential.c:426 | ||
1550 | #, fuzzy, c-format | ||
1551 | msgid "Subject public key `%s' is not well-formed\n" | ||
1552 | msgstr "Đối số không hợp lệ cho « %s ».\n" | ||
1553 | |||
1554 | #: src/credential/gnunet-credential.c:461 | ||
1555 | #, c-format | ||
1556 | msgid "You must provide issuer and subject attributes\n" | ||
1557 | msgstr "" | ||
1558 | |||
1559 | #: src/credential/gnunet-credential.c:511 | ||
1560 | #, c-format | ||
1561 | msgid "Issuer ego required\n" | ||
1562 | msgstr "" | ||
1563 | |||
1564 | #: src/credential/gnunet-credential.c:523 | ||
1565 | #, c-format | ||
1566 | msgid "Please specify name to lookup, subject key and issuer key!\n" | ||
1567 | msgstr "" | ||
1568 | |||
1569 | #: src/credential/gnunet-credential.c:543 | ||
1570 | msgid "create credential" | ||
1571 | msgstr "" | ||
1572 | |||
1573 | #: src/credential/gnunet-credential.c:547 | ||
1574 | msgid "verify credential against attribute" | ||
1575 | msgstr "" | ||
1576 | |||
1577 | #: src/credential/gnunet-credential.c:552 | ||
1578 | #, fuzzy | ||
1579 | msgid "The public key of the subject to lookup the credential for" | ||
1580 | msgstr "xác định mức ưu tiên của nội dung" | ||
1581 | |||
1582 | #: src/credential/gnunet-credential.c:557 | ||
1583 | msgid "The name of the credential presented by the subject" | ||
1584 | msgstr "" | ||
1585 | |||
1586 | #: src/credential/gnunet-credential.c:562 | ||
1587 | #, fuzzy | ||
1588 | msgid "The public key of the authority to verify the credential against" | ||
1589 | msgstr "xác định mức ưu tiên của nội dung" | ||
1590 | |||
1591 | #: src/credential/gnunet-credential.c:567 | ||
1592 | #, fuzzy | ||
1593 | msgid "The ego to use" | ||
1594 | msgstr "kích cỡ tin nhắn" | ||
1595 | |||
1596 | #: src/credential/gnunet-credential.c:572 | ||
1597 | msgid "The issuer attribute to verify against or to issue" | ||
1598 | msgstr "" | ||
1599 | |||
1600 | #: src/credential/gnunet-credential.c:577 | ||
1601 | msgid "The time to live for the credential" | ||
1602 | msgstr "" | ||
1603 | |||
1604 | #: src/credential/gnunet-credential.c:581 | ||
1605 | msgid "collect credentials" | ||
1606 | msgstr "" | ||
1607 | |||
1608 | #: src/credential/gnunet-credential.c:595 | ||
1609 | #, fuzzy | ||
1610 | msgid "GNUnet credential resolver tool" | ||
1611 | msgstr "Bản ghi lỗi GNUnet" | ||
1612 | |||
1613 | #: src/credential/gnunet-service-credential.c:1204 | ||
1614 | #: src/gns/gnunet-gns-helper-service-w32.c:727 src/gns/gnunet-gns.c:355 | ||
1615 | #, fuzzy, c-format | ||
1616 | msgid "Failed to connect to GNS\n" | ||
1617 | msgstr "Lỗi kết nối đến gnunetd.\n" | ||
1618 | |||
1619 | #: src/credential/gnunet-service-credential.c:1210 | ||
1620 | #: src/namestore/gnunet-namestore-fcfsd.c:1034 | ||
1621 | #: src/namestore/gnunet-namestore.c:802 | ||
1622 | #: src/namestore/plugin_rest_namestore.c:1022 | ||
1623 | #, fuzzy, c-format | ||
1624 | msgid "Failed to connect to namestore\n" | ||
1625 | msgstr "Không kết nối được đến trình nền gnunetd." | ||
1626 | |||
1627 | #: src/credential/plugin_gnsrecord_credential.c:186 | ||
1628 | #, fuzzy, c-format | ||
1629 | msgid "Unable to parse ATTR record string `%s'\n" | ||
1630 | msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" | ||
1631 | |||
1632 | #: src/credential/plugin_rest_credential.c:1155 src/gns/plugin_rest_gns.c:668 | ||
1633 | #, fuzzy | ||
1634 | msgid "GNS REST API initialized\n" | ||
1635 | msgstr "Lỗi sơ khởi lõi.\n" | ||
1636 | |||
1637 | #: src/datacache/datacache.c:119 src/datacache/datacache.c:294 | 1505 | #: src/datacache/datacache.c:119 src/datacache/datacache.c:294 |
1638 | #: src/datastore/gnunet-service-datastore.c:757 | 1506 | #: src/datastore/gnunet-service-datastore.c:757 |
1639 | #, fuzzy | 1507 | #, fuzzy |
@@ -1683,9 +1551,8 @@ msgstr "kho dữ liệu sqlite" | |||
1683 | #: src/datacache/plugin_datacache_sqlite.c:122 | 1551 | #: src/datacache/plugin_datacache_sqlite.c:122 |
1684 | #: src/datastore/plugin_datastore_mysql.c:892 | 1552 | #: src/datastore/plugin_datastore_mysql.c:892 |
1685 | #: src/datastore/plugin_datastore_sqlite.c:58 | 1553 | #: src/datastore/plugin_datastore_sqlite.c:58 |
1686 | #: src/datastore/plugin_datastore_sqlite.c:66 | 1554 | #: src/datastore/plugin_datastore_sqlite.c:66 src/my/my.c:80 src/my/my.c:92 |
1687 | #: src/identity-provider/plugin_identity_provider_sqlite.c:52 src/my/my.c:80 | 1555 | #: src/mysql/mysql.c:42 src/mysql/mysql.c:49 |
1688 | #: src/my/my.c:92 src/mysql/mysql.c:42 src/mysql/mysql.c:49 | ||
1689 | #: src/namecache/plugin_namecache_sqlite.c:53 | 1556 | #: src/namecache/plugin_namecache_sqlite.c:53 |
1690 | #: src/namestore/plugin_namestore_sqlite.c:53 | 1557 | #: src/namestore/plugin_namestore_sqlite.c:53 |
1691 | #: src/peerstore/plugin_peerstore_sqlite.c:52 | 1558 | #: src/peerstore/plugin_peerstore_sqlite.c:52 |
@@ -1703,7 +1570,6 @@ msgstr "« %s » bị lỗi tại %s:%d với lỗi: %s\n" | |||
1703 | 1570 | ||
1704 | #: src/datacache/plugin_datacache_sqlite.c:817 | 1571 | #: src/datacache/plugin_datacache_sqlite.c:817 |
1705 | #: src/datastore/plugin_datastore_sqlite.c:456 | 1572 | #: src/datastore/plugin_datastore_sqlite.c:456 |
1706 | #: src/identity-provider/plugin_identity_provider_sqlite.c:336 | ||
1707 | #: src/namecache/plugin_namecache_sqlite.c:296 | 1573 | #: src/namecache/plugin_namecache_sqlite.c:296 |
1708 | #: src/namestore/plugin_namestore_sqlite.c:355 | 1574 | #: src/namestore/plugin_namestore_sqlite.c:355 |
1709 | msgid "Tried to close sqlite without finalizing all prepared statements.\n" | 1575 | msgid "Tried to close sqlite without finalizing all prepared statements.\n" |
@@ -1728,7 +1594,7 @@ msgstr "" | |||
1728 | msgid "# queue entries created" | 1594 | msgid "# queue entries created" |
1729 | msgstr "# các truy vấn lỗ hổng được định tuyến" | 1595 | msgstr "# các truy vấn lỗ hổng được định tuyến" |
1730 | 1596 | ||
1731 | #: src/datastore/datastore_api.c:740 | 1597 | #: src/datastore/datastore_api.c:760 |
1732 | #, fuzzy | 1598 | #, fuzzy |
1733 | msgid "# status messages received" | 1599 | msgid "# status messages received" |
1734 | msgstr "# các thông báo phát hiện dht được nhận" | 1600 | msgstr "# các thông báo phát hiện dht được nhận" |
@@ -1738,39 +1604,39 @@ msgstr "# các thông báo phát hiện dht được nhận" | |||
1738 | msgid "# Results received" | 1604 | msgid "# Results received" |
1739 | msgstr "# các kết quả dht được nhận" | 1605 | msgstr "# các kết quả dht được nhận" |
1740 | 1606 | ||
1741 | #: src/datastore/datastore_api.c:941 | 1607 | #: src/datastore/datastore_api.c:920 |
1742 | #, fuzzy | 1608 | #, fuzzy |
1743 | msgid "# datastore connections (re)created" | 1609 | msgid "# datastore connections (re)created" |
1744 | msgstr "# các kết nối dht" | 1610 | msgstr "# các kết nối dht" |
1745 | 1611 | ||
1746 | #: src/datastore/datastore_api.c:1055 | 1612 | #: src/datastore/datastore_api.c:1034 |
1747 | #, fuzzy | 1613 | #, fuzzy |
1748 | msgid "# PUT requests executed" | 1614 | msgid "# PUT requests executed" |
1749 | msgstr "# các yêu cầu dht được định tuyến" | 1615 | msgstr "# các yêu cầu dht được định tuyến" |
1750 | 1616 | ||
1751 | #: src/datastore/datastore_api.c:1116 | 1617 | #: src/datastore/datastore_api.c:1095 |
1752 | #, fuzzy | 1618 | #, fuzzy |
1753 | msgid "# RESERVE requests executed" | 1619 | msgid "# RESERVE requests executed" |
1754 | msgstr "# các yêu cầu dht được định tuyến" | 1620 | msgstr "# các yêu cầu dht được định tuyến" |
1755 | 1621 | ||
1756 | #: src/datastore/datastore_api.c:1181 | 1622 | #: src/datastore/datastore_api.c:1160 |
1757 | msgid "# RELEASE RESERVE requests executed" | 1623 | msgid "# RELEASE RESERVE requests executed" |
1758 | msgstr "" | 1624 | msgstr "" |
1759 | 1625 | ||
1760 | #: src/datastore/datastore_api.c:1259 | 1626 | #: src/datastore/datastore_api.c:1238 |
1761 | #, fuzzy | 1627 | #, fuzzy |
1762 | msgid "# REMOVE requests executed" | 1628 | msgid "# REMOVE requests executed" |
1763 | msgstr "# các yêu cầu dht được định tuyến" | 1629 | msgstr "# các yêu cầu dht được định tuyến" |
1764 | 1630 | ||
1765 | #: src/datastore/datastore_api.c:1319 | 1631 | #: src/datastore/datastore_api.c:1298 |
1766 | msgid "# GET REPLICATION requests executed" | 1632 | msgid "# GET REPLICATION requests executed" |
1767 | msgstr "" | 1633 | msgstr "" |
1768 | 1634 | ||
1769 | #: src/datastore/datastore_api.c:1381 | 1635 | #: src/datastore/datastore_api.c:1360 |
1770 | msgid "# GET ZERO ANONYMITY requests executed" | 1636 | msgid "# GET ZERO ANONYMITY requests executed" |
1771 | msgstr "" | 1637 | msgstr "" |
1772 | 1638 | ||
1773 | #: src/datastore/datastore_api.c:1462 | 1639 | #: src/datastore/datastore_api.c:1441 |
1774 | #, fuzzy | 1640 | #, fuzzy |
1775 | msgid "# GET requests executed" | 1641 | msgid "# GET requests executed" |
1776 | msgstr "# các yêu cầu dht được định tuyến" | 1642 | msgstr "# các yêu cầu dht được định tuyến" |
@@ -2057,7 +1923,6 @@ msgid "`%s' failed at %s:%u with error: %s" | |||
2057 | msgstr "« %s » bị lỗi tại %s:%d với lỗi: %s" | 1923 | msgstr "« %s » bị lỗi tại %s:%d với lỗi: %s" |
2058 | 1924 | ||
2059 | #: src/datastore/plugin_datastore_sqlite.c:271 | 1925 | #: src/datastore/plugin_datastore_sqlite.c:271 |
2060 | #: src/identity-provider/plugin_identity_provider_sqlite.c:212 | ||
2061 | #: src/namecache/plugin_namecache_sqlite.c:194 | 1926 | #: src/namecache/plugin_namecache_sqlite.c:194 |
2062 | #: src/namestore/plugin_namestore_sqlite.c:222 | 1927 | #: src/namestore/plugin_namestore_sqlite.c:222 |
2063 | #: src/peerstore/plugin_peerstore_sqlite.c:535 | 1928 | #: src/peerstore/plugin_peerstore_sqlite.c:535 |
@@ -2082,7 +1947,6 @@ msgid "" | |||
2082 | msgstr "" | 1947 | msgstr "" |
2083 | 1948 | ||
2084 | #: src/datastore/plugin_datastore_sqlite.c:1337 | 1949 | #: src/datastore/plugin_datastore_sqlite.c:1337 |
2085 | #: src/identity-provider/plugin_identity_provider_sqlite.c:711 | ||
2086 | #: src/namecache/plugin_namecache_sqlite.c:603 | 1950 | #: src/namecache/plugin_namecache_sqlite.c:603 |
2087 | #: src/namestore/plugin_namestore_sqlite.c:802 | 1951 | #: src/namestore/plugin_namestore_sqlite.c:802 |
2088 | #, fuzzy | 1952 | #, fuzzy |
@@ -2151,6 +2015,52 @@ msgstr "" | |||
2151 | msgid "Prints all packets that go through the DHT." | 2015 | msgid "Prints all packets that go through the DHT." |
2152 | msgstr "" | 2016 | msgstr "" |
2153 | 2017 | ||
2018 | #: src/dht/gnunet_dht_profiler.c:1161 src/testbed/gnunet-testbed-profiler.c:253 | ||
2019 | #, fuzzy, c-format | ||
2020 | msgid "Exiting as the number of peers is %u\n" | ||
2021 | msgstr "tăng sổ tối đa các kết nối TCP/IP" | ||
2022 | |||
2023 | #: src/dht/gnunet_dht_profiler.c:1188 | ||
2024 | #, fuzzy | ||
2025 | msgid "number of peers to start" | ||
2026 | msgstr "số lần lặp lại" | ||
2027 | |||
2028 | #: src/dht/gnunet_dht_profiler.c:1194 | ||
2029 | msgid "" | ||
2030 | "maximum number of times we try to search for successor circle formation (0 " | ||
2031 | "for R5N)" | ||
2032 | msgstr "" | ||
2033 | |||
2034 | #: src/dht/gnunet_dht_profiler.c:1200 src/nse/gnunet-nse-profiler.c:853 | ||
2035 | #: src/testbed/gnunet-testbed-profiler.c:304 | ||
2036 | msgid "name of the file with the login information for the testbed" | ||
2037 | msgstr "" | ||
2038 | |||
2039 | #: src/dht/gnunet_dht_profiler.c:1206 | ||
2040 | msgid "delay between rounds for collecting statistics (default: 30 sec)" | ||
2041 | msgstr "" | ||
2042 | |||
2043 | #: src/dht/gnunet_dht_profiler.c:1212 | ||
2044 | msgid "delay to start doing PUTs (default: 1 sec)" | ||
2045 | msgstr "" | ||
2046 | |||
2047 | #: src/dht/gnunet_dht_profiler.c:1218 | ||
2048 | msgid "delay to start doing GETs (default: 5 min)" | ||
2049 | msgstr "" | ||
2050 | |||
2051 | #: src/dht/gnunet_dht_profiler.c:1223 | ||
2052 | msgid "replication degree for DHT PUTs" | ||
2053 | msgstr "" | ||
2054 | |||
2055 | #: src/dht/gnunet_dht_profiler.c:1230 | ||
2056 | msgid "timeout for DHT PUT and GET requests (default: 1 min)" | ||
2057 | msgstr "" | ||
2058 | |||
2059 | #: src/dht/gnunet_dht_profiler.c:1248 | ||
2060 | #, fuzzy | ||
2061 | msgid "Measure quality and performance of the DHT service." | ||
2062 | msgstr "Không thể truy cập đến dịch vụ" | ||
2063 | |||
2154 | #: src/dht/gnunet-dht-put.c:120 | 2064 | #: src/dht/gnunet-dht-put.c:120 |
2155 | #, fuzzy | 2065 | #, fuzzy |
2156 | msgid "PUT request sent with key" | 2066 | msgid "PUT request sent with key" |
@@ -2428,52 +2338,6 @@ msgstr "" | |||
2428 | msgid "# DHT requests combined" | 2338 | msgid "# DHT requests combined" |
2429 | msgstr "# các yêu cầu get (lấy) dht được nhận" | 2339 | msgstr "# các yêu cầu get (lấy) dht được nhận" |
2430 | 2340 | ||
2431 | #: src/dht/gnunet_dht_profiler.c:1161 src/testbed/gnunet-testbed-profiler.c:255 | ||
2432 | #, fuzzy, c-format | ||
2433 | msgid "Exiting as the number of peers is %u\n" | ||
2434 | msgstr "tăng sổ tối đa các kết nối TCP/IP" | ||
2435 | |||
2436 | #: src/dht/gnunet_dht_profiler.c:1188 | ||
2437 | #, fuzzy | ||
2438 | msgid "number of peers to start" | ||
2439 | msgstr "số lần lặp lại" | ||
2440 | |||
2441 | #: src/dht/gnunet_dht_profiler.c:1194 | ||
2442 | msgid "" | ||
2443 | "maximum number of times we try to search for successor circle formation (0 " | ||
2444 | "for R5N)" | ||
2445 | msgstr "" | ||
2446 | |||
2447 | #: src/dht/gnunet_dht_profiler.c:1200 src/nse/gnunet-nse-profiler.c:853 | ||
2448 | #: src/testbed/gnunet-testbed-profiler.c:305 | ||
2449 | msgid "name of the file with the login information for the testbed" | ||
2450 | msgstr "" | ||
2451 | |||
2452 | #: src/dht/gnunet_dht_profiler.c:1206 | ||
2453 | msgid "delay between rounds for collecting statistics (default: 30 sec)" | ||
2454 | msgstr "" | ||
2455 | |||
2456 | #: src/dht/gnunet_dht_profiler.c:1212 | ||
2457 | msgid "delay to start doing PUTs (default: 1 sec)" | ||
2458 | msgstr "" | ||
2459 | |||
2460 | #: src/dht/gnunet_dht_profiler.c:1218 | ||
2461 | msgid "delay to start doing GETs (default: 5 min)" | ||
2462 | msgstr "" | ||
2463 | |||
2464 | #: src/dht/gnunet_dht_profiler.c:1223 | ||
2465 | msgid "replication degree for DHT PUTs" | ||
2466 | msgstr "" | ||
2467 | |||
2468 | #: src/dht/gnunet_dht_profiler.c:1230 | ||
2469 | msgid "timeout for DHT PUT and GET requests (default: 1 min)" | ||
2470 | msgstr "" | ||
2471 | |||
2472 | #: src/dht/gnunet_dht_profiler.c:1248 | ||
2473 | #, fuzzy | ||
2474 | msgid "Measure quality and performance of the DHT service." | ||
2475 | msgstr "Không thể truy cập đến dịch vụ" | ||
2476 | |||
2477 | #: src/dht/plugin_block_dht.c:187 | 2341 | #: src/dht/plugin_block_dht.c:187 |
2478 | #, fuzzy, c-format | 2342 | #, fuzzy, c-format |
2479 | msgid "Block not of type %u\n" | 2343 | msgid "Block not of type %u\n" |
@@ -3024,7 +2888,7 @@ msgstr "" | |||
3024 | msgid "Failed to not connect to `%s' service.\n" | 2888 | msgid "Failed to not connect to `%s' service.\n" |
3025 | msgstr "Lỗi sơ khởi dịch vụ « %s ».\n" | 2889 | msgstr "Lỗi sơ khởi dịch vụ « %s ».\n" |
3026 | 2890 | ||
3027 | #: src/fs/fs_misc.c:126 | 2891 | #: src/fs/fs_misc.c:128 |
3028 | #, c-format | 2892 | #, c-format |
3029 | msgid "Did not find mime type `%s' in extension list.\n" | 2893 | msgid "Did not find mime type `%s' in extension list.\n" |
3030 | msgstr "" | 2894 | msgstr "" |
@@ -3460,6 +3324,15 @@ msgid "" | |||
3460 | "chk/...)" | 3324 | "chk/...)" |
3461 | msgstr "" | 3325 | msgstr "" |
3462 | 3326 | ||
3327 | #: src/fs/gnunet-fs.c:119 | ||
3328 | msgid "print a list of all indexed files" | ||
3329 | msgstr "" | ||
3330 | |||
3331 | #: src/fs/gnunet-fs.c:130 | ||
3332 | #, fuzzy | ||
3333 | msgid "Special file-sharing operations" | ||
3334 | msgstr "Tùy chọn chia sẻ tập tin" | ||
3335 | |||
3463 | #: src/fs/gnunet-fs-profiler.c:211 | 3336 | #: src/fs/gnunet-fs-profiler.c:211 |
3464 | msgid "run the experiment with COUNT peers" | 3337 | msgid "run the experiment with COUNT peers" |
3465 | msgstr "" | 3338 | msgstr "" |
@@ -3476,15 +3349,6 @@ msgstr "" | |||
3476 | msgid "run a testbed to measure file-sharing performance" | 3349 | msgid "run a testbed to measure file-sharing performance" |
3477 | msgstr "" | 3350 | msgstr "" |
3478 | 3351 | ||
3479 | #: src/fs/gnunet-fs.c:119 | ||
3480 | msgid "print a list of all indexed files" | ||
3481 | msgstr "" | ||
3482 | |||
3483 | #: src/fs/gnunet-fs.c:130 | ||
3484 | #, fuzzy | ||
3485 | msgid "Special file-sharing operations" | ||
3486 | msgstr "Tùy chọn chia sẻ tập tin" | ||
3487 | |||
3488 | #: src/fs/gnunet-publish.c:219 src/fs/gnunet-publish.c:231 | 3352 | #: src/fs/gnunet-publish.c:219 src/fs/gnunet-publish.c:231 |
3489 | #, c-format | 3353 | #, c-format |
3490 | msgid "Publishing `%s' at %llu/%llu (%s remaining)\n" | 3354 | msgid "Publishing `%s' at %llu/%llu (%s remaining)\n" |
@@ -4195,11 +4059,22 @@ msgstr "" | |||
4195 | msgid "GNUnet DNS-to-GNS proxy (a DNS server)" | 4059 | msgid "GNUnet DNS-to-GNS proxy (a DNS server)" |
4196 | msgstr "" | 4060 | msgstr "" |
4197 | 4061 | ||
4198 | #: src/gns/gnunet-gns-helper-service-w32.c:602 | 4062 | #: src/gns/gnunet-gns.c:235 src/gns/plugin_rest_gns.c:346 |
4199 | msgid "Not ready to process requests, lacking ego data\n" | 4063 | #, c-format |
4064 | msgid "Invalid typename specified, assuming `ANY'\n" | ||
4065 | msgstr "" | ||
4066 | |||
4067 | #: src/gns/gnunet-gns.c:252 | ||
4068 | #, c-format | ||
4069 | msgid "Please specify name to lookup!\n" | ||
4070 | msgstr "" | ||
4071 | |||
4072 | #: src/gns/gnunet-gns.c:276 | ||
4073 | #, c-format | ||
4074 | msgid "Ego for `%s' not found, cannot perform lookup.\n" | ||
4200 | msgstr "" | 4075 | msgstr "" |
4201 | 4076 | ||
4202 | #: src/gns/gnunet-gns-helper-service-w32.c:701 src/gns/gnunet-gns.c:315 | 4077 | #: src/gns/gnunet-gns.c:315 src/gns/gnunet-gns-helper-service-w32.c:701 |
4203 | #: src/gns/plugin_rest_gns.c:422 | 4078 | #: src/gns/plugin_rest_gns.c:422 |
4204 | #, c-format | 4079 | #, c-format |
4205 | msgid "" | 4080 | msgid "" |
@@ -4207,6 +4082,53 @@ msgid "" | |||
4207 | "gns-import.sh?\n" | 4082 | "gns-import.sh?\n" |
4208 | msgstr "" | 4083 | msgstr "" |
4209 | 4084 | ||
4085 | #: src/gns/gnunet-gns.c:355 src/gns/gnunet-gns-helper-service-w32.c:727 | ||
4086 | #, fuzzy, c-format | ||
4087 | msgid "Failed to connect to GNS\n" | ||
4088 | msgstr "Lỗi kết nối đến gnunetd.\n" | ||
4089 | |||
4090 | #: src/gns/gnunet-gns.c:374 | ||
4091 | #, c-format | ||
4092 | msgid "Public key `%s' is not well-formed\n" | ||
4093 | msgstr "" | ||
4094 | |||
4095 | #: src/gns/gnunet-gns.c:428 | ||
4096 | msgid "Lookup a record for the given name" | ||
4097 | msgstr "" | ||
4098 | |||
4099 | #: src/gns/gnunet-gns.c:434 | ||
4100 | #, fuzzy | ||
4101 | msgid "Specify the type of the record to lookup" | ||
4102 | msgstr "xác định mức ưu tiên của nội dung" | ||
4103 | |||
4104 | #: src/gns/gnunet-gns.c:440 | ||
4105 | #, fuzzy | ||
4106 | msgid "Specify timeout for the lookup" | ||
4107 | msgstr "xác định mức ưu tiên của nội dung" | ||
4108 | |||
4109 | #: src/gns/gnunet-gns.c:445 | ||
4110 | msgid "No unneeded output" | ||
4111 | msgstr "" | ||
4112 | |||
4113 | #: src/gns/gnunet-gns.c:451 | ||
4114 | #, fuzzy | ||
4115 | msgid "Specify the public key of the zone to lookup the record in" | ||
4116 | msgstr "xác định mức ưu tiên của nội dung" | ||
4117 | |||
4118 | #: src/gns/gnunet-gns.c:457 | ||
4119 | #, fuzzy | ||
4120 | msgid "Specify the name of the ego of the zone to lookup the record in" | ||
4121 | msgstr "xác định mức ưu tiên của nội dung" | ||
4122 | |||
4123 | #: src/gns/gnunet-gns.c:476 | ||
4124 | #, fuzzy | ||
4125 | msgid "GNUnet GNS resolver tool" | ||
4126 | msgstr "Bản ghi lỗi GNUnet" | ||
4127 | |||
4128 | #: src/gns/gnunet-gns-helper-service-w32.c:602 | ||
4129 | msgid "Not ready to process requests, lacking ego data\n" | ||
4130 | msgstr "" | ||
4131 | |||
4210 | #: src/gns/gnunet-gns-helper-service-w32.c:739 | 4132 | #: src/gns/gnunet-gns-helper-service-w32.c:739 |
4211 | #, fuzzy, c-format | 4133 | #, fuzzy, c-format |
4212 | msgid "Failed to connect to identity service\n" | 4134 | msgid "Failed to connect to identity service\n" |
@@ -4231,165 +4153,112 @@ msgstr "" | |||
4231 | msgid "%s failed at %s:%d: `%s'\n" | 4153 | msgid "%s failed at %s:%d: `%s'\n" |
4232 | msgstr "%s bị lỗi tại %s:%d: « %s »\n" | 4154 | msgstr "%s bị lỗi tại %s:%d: « %s »\n" |
4233 | 4155 | ||
4234 | #: src/gns/gnunet-gns-proxy.c:878 | 4156 | #: src/gns/gnunet-gns-proxy.c:887 |
4235 | #, fuzzy, c-format | 4157 | #, fuzzy, c-format |
4236 | msgid "Unsupported CURL SSL backend %d\n" | 4158 | msgid "Unsupported CURL SSL backend %d\n" |
4237 | msgstr "Lệnh không được hỗ trợ « %s ». Đang hủy bỏ.\n" | 4159 | msgstr "Lệnh không được hỗ trợ « %s ». Đang hủy bỏ.\n" |
4238 | 4160 | ||
4239 | #: src/gns/gnunet-gns-proxy.c:901 | 4161 | #: src/gns/gnunet-gns-proxy.c:910 |
4240 | #, fuzzy, c-format | 4162 | #, fuzzy, c-format |
4241 | msgid "Failed to fetch CN from cert: %s\n" | 4163 | msgid "Failed to fetch CN from cert: %s\n" |
4242 | msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" | 4164 | msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" |
4243 | 4165 | ||
4244 | #: src/gns/gnunet-gns-proxy.c:924 | 4166 | #: src/gns/gnunet-gns-proxy.c:933 |
4245 | #, fuzzy, c-format | 4167 | #, fuzzy, c-format |
4246 | msgid "Failed to initialize DANE: %s\n" | 4168 | msgid "Failed to initialize DANE: %s\n" |
4247 | msgstr "Không thể sơ khởi SQLite: %s.\n" | 4169 | msgstr "Không thể sơ khởi SQLite: %s.\n" |
4248 | 4170 | ||
4249 | #: src/gns/gnunet-gns-proxy.c:937 | 4171 | #: src/gns/gnunet-gns-proxy.c:946 |
4250 | #, fuzzy, c-format | 4172 | #, fuzzy, c-format |
4251 | msgid "Failed to parse DANE record: %s\n" | 4173 | msgid "Failed to parse DANE record: %s\n" |
4252 | msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" | 4174 | msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" |
4253 | 4175 | ||
4254 | #: src/gns/gnunet-gns-proxy.c:952 | 4176 | #: src/gns/gnunet-gns-proxy.c:961 |
4255 | #, fuzzy, c-format | 4177 | #, fuzzy, c-format |
4256 | msgid "Failed to verify TLS connection using DANE: %s\n" | 4178 | msgid "Failed to verify TLS connection using DANE: %s\n" |
4257 | msgstr "Không thể lưu tập tin cấu hình « %s »:" | 4179 | msgstr "Không thể lưu tập tin cấu hình « %s »:" |
4258 | 4180 | ||
4259 | #: src/gns/gnunet-gns-proxy.c:962 | 4181 | #: src/gns/gnunet-gns-proxy.c:971 |
4260 | #, c-format | 4182 | #, c-format |
4261 | msgid "Failed DANE verification failed with GnuTLS verify status code: %u\n" | 4183 | msgid "Failed DANE verification failed with GnuTLS verify status code: %u\n" |
4262 | msgstr "" | 4184 | msgstr "" |
4263 | 4185 | ||
4264 | #: src/gns/gnunet-gns-proxy.c:986 | 4186 | #: src/gns/gnunet-gns-proxy.c:995 |
4265 | #, c-format | 4187 | #, c-format |
4266 | msgid "SSL certificate subject name (%s) does not match `%s'\n" | 4188 | msgid "SSL certificate subject name (%s) does not match `%s'\n" |
4267 | msgstr "" | 4189 | msgstr "" |
4268 | 4190 | ||
4269 | #: src/gns/gnunet-gns-proxy.c:1095 | 4191 | #: src/gns/gnunet-gns-proxy.c:1104 |
4270 | #, c-format | 4192 | #, c-format |
4271 | msgid "Cookie domain `%s' supplied by server is invalid\n" | 4193 | msgid "Cookie domain `%s' supplied by server is invalid\n" |
4272 | msgstr "" | 4194 | msgstr "" |
4273 | 4195 | ||
4274 | #: src/gns/gnunet-gns-proxy.c:1699 | 4196 | #: src/gns/gnunet-gns-proxy.c:1709 |
4275 | #, fuzzy, c-format | 4197 | #, fuzzy, c-format |
4276 | msgid "Unsupported HTTP method `%s'\n" | 4198 | msgid "Unsupported HTTP method `%s'\n" |
4277 | msgstr "Lệnh không được hỗ trợ « %s ». Đang hủy bỏ.\n" | 4199 | msgstr "Lệnh không được hỗ trợ « %s ». Đang hủy bỏ.\n" |
4278 | 4200 | ||
4279 | #: src/gns/gnunet-gns-proxy.c:2162 | 4201 | #: src/gns/gnunet-gns-proxy.c:2172 |
4280 | #, fuzzy, c-format | 4202 | #, fuzzy, c-format |
4281 | msgid "Unable to import private key from file `%s'\n" | 4203 | msgid "Unable to import private key from file `%s'\n" |
4282 | msgstr "Không thể tạo tài khoản người dùng:" | 4204 | msgstr "Không thể tạo tài khoản người dùng:" |
4283 | 4205 | ||
4284 | #: src/gns/gnunet-gns-proxy.c:2192 | 4206 | #: src/gns/gnunet-gns-proxy.c:2202 |
4285 | #, fuzzy, c-format | 4207 | #, fuzzy, c-format |
4286 | msgid "Unable to import certificate %s\n" | 4208 | msgid "Unable to import certificate %s\n" |
4287 | msgstr "Không thể lưu tập tin cấu hình « %s »:" | 4209 | msgstr "Không thể lưu tập tin cấu hình « %s »:" |
4288 | 4210 | ||
4289 | #: src/gns/gnunet-gns-proxy.c:2365 | 4211 | #: src/gns/gnunet-gns-proxy.c:2375 |
4290 | #, fuzzy, c-format | 4212 | #, fuzzy, c-format |
4291 | msgid "Failed to start HTTPS server for `%s'\n" | 4213 | msgid "Failed to start HTTPS server for `%s'\n" |
4292 | msgstr "Lỗi bắt đầu thu thập.\n" | 4214 | msgstr "Lỗi bắt đầu thu thập.\n" |
4293 | 4215 | ||
4294 | #: src/gns/gnunet-gns-proxy.c:2384 src/rest/gnunet-rest-server.c:533 | 4216 | #: src/gns/gnunet-gns-proxy.c:2394 src/rest/gnunet-rest-server.c:533 |
4295 | #, fuzzy | 4217 | #, fuzzy |
4296 | msgid "Failed to pass client to MHD\n" | 4218 | msgid "Failed to pass client to MHD\n" |
4297 | msgstr "Lỗi kết nối đến gnunetd.\n" | 4219 | msgstr "Lỗi kết nối đến gnunetd.\n" |
4298 | 4220 | ||
4299 | #: src/gns/gnunet-gns-proxy.c:2704 | 4221 | #: src/gns/gnunet-gns-proxy.c:2716 |
4300 | #, fuzzy, c-format | 4222 | #, fuzzy, c-format |
4301 | msgid "Unsupported socks version %d\n" | 4223 | msgid "Unsupported socks version %d\n" |
4302 | msgstr "Lệnh không được hỗ trợ « %s ». Đang hủy bỏ.\n" | 4224 | msgstr "Lệnh không được hỗ trợ « %s ». Đang hủy bỏ.\n" |
4303 | 4225 | ||
4304 | #: src/gns/gnunet-gns-proxy.c:2733 | 4226 | #: src/gns/gnunet-gns-proxy.c:2745 |
4305 | #, fuzzy, c-format | 4227 | #, fuzzy, c-format |
4306 | msgid "Unsupported socks command %d\n" | 4228 | msgid "Unsupported socks command %d\n" |
4307 | msgstr "Lệnh không được hỗ trợ « %s ». Đang hủy bỏ.\n" | 4229 | msgstr "Lệnh không được hỗ trợ « %s ». Đang hủy bỏ.\n" |
4308 | 4230 | ||
4309 | #: src/gns/gnunet-gns-proxy.c:2751 src/gns/gnunet-gns-proxy.c:2780 | 4231 | #: src/gns/gnunet-gns-proxy.c:2763 src/gns/gnunet-gns-proxy.c:2792 |
4310 | msgid "SSL connection to plain IPv4 address requested\n" | 4232 | msgid "SSL connection to plain IPv4 address requested\n" |
4311 | msgstr "" | 4233 | msgstr "" |
4312 | 4234 | ||
4313 | #: src/gns/gnunet-gns-proxy.c:2830 | 4235 | #: src/gns/gnunet-gns-proxy.c:2842 |
4314 | #, fuzzy, c-format | 4236 | #, fuzzy, c-format |
4315 | msgid "Unsupported socks address type %d\n" | 4237 | msgid "Unsupported socks address type %d\n" |
4316 | msgstr "Lệnh không được hỗ trợ « %s ». Đang hủy bỏ.\n" | 4238 | msgstr "Lệnh không được hỗ trợ « %s ». Đang hủy bỏ.\n" |
4317 | 4239 | ||
4318 | #: src/gns/gnunet-gns-proxy.c:3165 src/gns/gnunet-service-gns.c:403 | 4240 | #: src/gns/gnunet-gns-proxy.c:3177 src/gns/gnunet-service-gns.c:403 |
4319 | #, c-format | 4241 | #, c-format |
4320 | msgid "No ego configured for `%s`\n" | 4242 | msgid "No ego configured for `%s`\n" |
4321 | msgstr "" | 4243 | msgstr "" |
4322 | 4244 | ||
4323 | #: src/gns/gnunet-gns-proxy.c:3226 | 4245 | #: src/gns/gnunet-gns-proxy.c:3238 |
4324 | #, fuzzy, c-format | 4246 | #, fuzzy, c-format |
4325 | msgid "Failed to load SSL/TLS key and certificate from `%s'\n" | 4247 | msgid "Failed to load SSL/TLS key and certificate from `%s'\n" |
4326 | msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" | 4248 | msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" |
4327 | 4249 | ||
4328 | #: src/gns/gnunet-gns-proxy.c:3269 | 4250 | #: src/gns/gnunet-gns-proxy.c:3281 |
4329 | msgid "listen on specified port (default: 7777)" | 4251 | msgid "listen on specified port (default: 7777)" |
4330 | msgstr "" | 4252 | msgstr "" |
4331 | 4253 | ||
4332 | #: src/gns/gnunet-gns-proxy.c:3275 | 4254 | #: src/gns/gnunet-gns-proxy.c:3287 |
4333 | msgid "pem file to use as CA" | 4255 | msgid "pem file to use as CA" |
4334 | msgstr "" | 4256 | msgstr "" |
4335 | 4257 | ||
4336 | #: src/gns/gnunet-gns-proxy.c:3300 | 4258 | #: src/gns/gnunet-gns-proxy.c:3312 |
4337 | msgid "GNUnet GNS proxy" | 4259 | msgid "GNUnet GNS proxy" |
4338 | msgstr "" | 4260 | msgstr "" |
4339 | 4261 | ||
4340 | #: src/gns/gnunet-gns.c:235 src/gns/plugin_rest_gns.c:346 | ||
4341 | #, c-format | ||
4342 | msgid "Invalid typename specified, assuming `ANY'\n" | ||
4343 | msgstr "" | ||
4344 | |||
4345 | #: src/gns/gnunet-gns.c:252 | ||
4346 | #, c-format | ||
4347 | msgid "Please specify name to lookup!\n" | ||
4348 | msgstr "" | ||
4349 | |||
4350 | #: src/gns/gnunet-gns.c:276 | ||
4351 | #, c-format | ||
4352 | msgid "Ego for `%s' not found, cannot perform lookup.\n" | ||
4353 | msgstr "" | ||
4354 | |||
4355 | #: src/gns/gnunet-gns.c:374 | ||
4356 | #, c-format | ||
4357 | msgid "Public key `%s' is not well-formed\n" | ||
4358 | msgstr "" | ||
4359 | |||
4360 | #: src/gns/gnunet-gns.c:428 | ||
4361 | msgid "Lookup a record for the given name" | ||
4362 | msgstr "" | ||
4363 | |||
4364 | #: src/gns/gnunet-gns.c:434 | ||
4365 | #, fuzzy | ||
4366 | msgid "Specify the type of the record to lookup" | ||
4367 | msgstr "xác định mức ưu tiên của nội dung" | ||
4368 | |||
4369 | #: src/gns/gnunet-gns.c:440 | ||
4370 | #, fuzzy | ||
4371 | msgid "Specify timeout for the lookup" | ||
4372 | msgstr "xác định mức ưu tiên của nội dung" | ||
4373 | |||
4374 | #: src/gns/gnunet-gns.c:445 | ||
4375 | msgid "No unneeded output" | ||
4376 | msgstr "" | ||
4377 | |||
4378 | #: src/gns/gnunet-gns.c:451 | ||
4379 | #, fuzzy | ||
4380 | msgid "Specify the public key of the zone to lookup the record in" | ||
4381 | msgstr "xác định mức ưu tiên của nội dung" | ||
4382 | |||
4383 | #: src/gns/gnunet-gns.c:457 | ||
4384 | #, fuzzy | ||
4385 | msgid "Specify the name of the ego of the zone to lookup the record in" | ||
4386 | msgstr "xác định mức ưu tiên của nội dung" | ||
4387 | |||
4388 | #: src/gns/gnunet-gns.c:476 | ||
4389 | #, fuzzy | ||
4390 | msgid "GNUnet GNS resolver tool" | ||
4391 | msgstr "Bản ghi lỗi GNUnet" | ||
4392 | |||
4393 | #: src/gns/gnunet-service-gns.c:442 | 4262 | #: src/gns/gnunet-service-gns.c:442 |
4394 | #, fuzzy | 4263 | #, fuzzy |
4395 | msgid "Failed to connect to the namecache!\n" | 4264 | msgid "Failed to connect to the namecache!\n" |
@@ -4455,35 +4324,45 @@ msgstr "" | |||
4455 | msgid "Hostname `%s' is not well-formed, resolution fails\n" | 4324 | msgid "Hostname `%s' is not well-formed, resolution fails\n" |
4456 | msgstr "" | 4325 | msgstr "" |
4457 | 4326 | ||
4458 | #: src/gns/plugin_gnsrecord_gns.c:179 | 4327 | #: src/gns/plugin_gnsrecord_gns.c:203 |
4459 | #, fuzzy, c-format | 4328 | #, fuzzy, c-format |
4460 | msgid "Unable to parse PKEY record `%s'\n" | 4329 | msgid "Unable to parse PKEY record `%s'\n" |
4461 | msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" | 4330 | msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" |
4462 | 4331 | ||
4463 | #: src/gns/plugin_gnsrecord_gns.c:208 | 4332 | #: src/gns/plugin_gnsrecord_gns.c:232 |
4464 | #, fuzzy, c-format | 4333 | #, fuzzy, c-format |
4465 | msgid "Unable to parse GNS2DNS record `%s'\n" | 4334 | msgid "Unable to parse GNS2DNS record `%s'\n" |
4466 | msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" | 4335 | msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" |
4467 | 4336 | ||
4468 | #: src/gns/plugin_gnsrecord_gns.c:229 | 4337 | #: src/gns/plugin_gnsrecord_gns.c:253 |
4469 | #, fuzzy, c-format | 4338 | #, fuzzy, c-format |
4470 | msgid "Failed to serialize GNS2DNS record with value `%s'\n" | 4339 | msgid "Failed to serialize GNS2DNS record with value `%s'\n" |
4471 | msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n" | 4340 | msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n" |
4472 | 4341 | ||
4473 | #: src/gns/plugin_gnsrecord_gns.c:252 | 4342 | #: src/gns/plugin_gnsrecord_gns.c:276 |
4474 | #, fuzzy, c-format | 4343 | #, fuzzy, c-format |
4475 | msgid "Unable to parse VPN record string `%s'\n" | 4344 | msgid "Unable to parse VPN record string `%s'\n" |
4476 | msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" | 4345 | msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" |
4477 | 4346 | ||
4478 | #: src/gns/plugin_gnsrecord_gns.c:288 | 4347 | #: src/gns/plugin_gnsrecord_gns.c:312 |
4479 | #, fuzzy, c-format | 4348 | #, fuzzy, c-format |
4480 | msgid "Unable to parse BOX record string `%s'\n" | 4349 | msgid "Unable to parse BOX record string `%s'\n" |
4481 | msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" | 4350 | msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" |
4482 | 4351 | ||
4352 | #: src/gns/plugin_gnsrecord_gns.c:360 | ||
4353 | #, fuzzy, c-format | ||
4354 | msgid "Unable to parse REVERSE record string `%s'\n" | ||
4355 | msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" | ||
4356 | |||
4483 | #: src/gns/plugin_rest_gns.c:384 | 4357 | #: src/gns/plugin_rest_gns.c:384 |
4484 | msgid "Ego for not found, cannot perform lookup.\n" | 4358 | msgid "Ego for not found, cannot perform lookup.\n" |
4485 | msgstr "" | 4359 | msgstr "" |
4486 | 4360 | ||
4361 | #: src/gns/plugin_rest_gns.c:668 | ||
4362 | #, fuzzy | ||
4363 | msgid "GNS REST API initialized\n" | ||
4364 | msgstr "Lỗi sơ khởi lõi.\n" | ||
4365 | |||
4487 | #: src/gnsrecord/plugin_gnsrecord_dns.c:359 | 4366 | #: src/gnsrecord/plugin_gnsrecord_dns.c:359 |
4488 | #, fuzzy, c-format | 4367 | #, fuzzy, c-format |
4489 | msgid "Unable to parse IPv4 address `%s'\n" | 4368 | msgid "Unable to parse IPv4 address `%s'\n" |
@@ -4589,37 +4468,37 @@ msgstr "Gặp lỗi khi tạo người dùng" | |||
4589 | msgid "Modified %u addresses, wrote %u bytes\n" | 4468 | msgid "Modified %u addresses, wrote %u bytes\n" |
4590 | msgstr "" | 4469 | msgstr "" |
4591 | 4470 | ||
4592 | #: src/hello/hello.c:1103 | 4471 | #: src/hello/hello.c:1110 |
4593 | #, fuzzy | 4472 | #, fuzzy |
4594 | msgid "Failed to parse HELLO message: missing expiration time\n" | 4473 | msgid "Failed to parse HELLO message: missing expiration time\n" |
4595 | msgstr "Lỗi lưu cấu hình." | 4474 | msgstr "Lỗi lưu cấu hình." |
4596 | 4475 | ||
4597 | #: src/hello/hello.c:1112 | 4476 | #: src/hello/hello.c:1119 |
4598 | #, fuzzy | 4477 | #, fuzzy |
4599 | msgid "Failed to parse HELLO message: invalid expiration time\n" | 4478 | msgid "Failed to parse HELLO message: invalid expiration time\n" |
4600 | msgstr "Lỗi lưu cấu hình." | 4479 | msgstr "Lỗi lưu cấu hình." |
4601 | 4480 | ||
4602 | #: src/hello/hello.c:1122 | 4481 | #: src/hello/hello.c:1129 |
4603 | #, fuzzy | 4482 | #, fuzzy |
4604 | msgid "Failed to parse HELLO message: malformed\n" | 4483 | msgid "Failed to parse HELLO message: malformed\n" |
4605 | msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" | 4484 | msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" |
4606 | 4485 | ||
4607 | #: src/hello/hello.c:1133 | 4486 | #: src/hello/hello.c:1140 |
4608 | #, fuzzy | 4487 | #, fuzzy |
4609 | msgid "Failed to parse HELLO message: missing transport plugin\n" | 4488 | msgid "Failed to parse HELLO message: missing transport plugin\n" |
4610 | msgstr "Không thể nạp phần bổ sung truyền tải « %s »\n" | 4489 | msgstr "Không thể nạp phần bổ sung truyền tải « %s »\n" |
4611 | 4490 | ||
4612 | #: src/hello/hello.c:1151 | 4491 | #: src/hello/hello.c:1158 |
4613 | #, c-format | 4492 | #, c-format |
4614 | msgid "Plugin `%s' not found, skipping address\n" | 4493 | msgid "Plugin `%s' not found, skipping address\n" |
4615 | msgstr "" | 4494 | msgstr "" |
4616 | 4495 | ||
4617 | #: src/hello/hello.c:1159 | 4496 | #: src/hello/hello.c:1166 |
4618 | #, c-format | 4497 | #, c-format |
4619 | msgid "Plugin `%s' does not support URIs yet\n" | 4498 | msgid "Plugin `%s' does not support URIs yet\n" |
4620 | msgstr "" | 4499 | msgstr "" |
4621 | 4500 | ||
4622 | #: src/hello/hello.c:1174 | 4501 | #: src/hello/hello.c:1181 |
4623 | #, fuzzy, c-format | 4502 | #, fuzzy, c-format |
4624 | msgid "Failed to parse `%s' as an address for plugin `%s'\n" | 4503 | msgid "Failed to parse `%s' as an address for plugin `%s'\n" |
4625 | msgstr "Lỗi đóng kết đến cổng %s %d.\n" | 4504 | msgstr "Lỗi đóng kết đến cổng %s %d.\n" |
@@ -4881,7 +4760,7 @@ msgid "# hostlist advertisements send" | |||
4881 | msgstr "# Các quảng cáo ngoại được chuyển tiếp" | 4760 | msgstr "# Các quảng cáo ngoại được chuyển tiếp" |
4882 | 4761 | ||
4883 | #: src/hostlist/gnunet-daemon-hostlist_server.c:679 | 4762 | #: src/hostlist/gnunet-daemon-hostlist_server.c:679 |
4884 | #: src/transport/gnunet-service-transport.c:2803 | 4763 | #: src/transport/gnunet-service-transport.c:2815 |
4885 | #, fuzzy | 4764 | #, fuzzy |
4886 | msgid "Could not access PEERINFO service. Exiting.\n" | 4765 | msgid "Could not access PEERINFO service. Exiting.\n" |
4887 | msgstr "Không thể truy cập đến thông tin về không gian tên.\n" | 4766 | msgstr "Không thể truy cập đến thông tin về không gian tên.\n" |
@@ -4926,53 +4805,6 @@ msgstr "« %s » không sẵn sàng.\n" | |||
4926 | msgid "Could not start hostlist HTTP server on port %u\n" | 4805 | msgid "Could not start hostlist HTTP server on port %u\n" |
4927 | msgstr "Cổng cho trình phục vụ HTTP danh sách máy chủ thống nhất" | 4806 | msgstr "Cổng cho trình phục vụ HTTP danh sách máy chủ thống nhất" |
4928 | 4807 | ||
4929 | #: src/identity-provider/gnunet-idp.c:348 | ||
4930 | #, fuzzy | ||
4931 | msgid "Ego is required\n" | ||
4932 | msgstr "Bị từ chối đặt tùy chọn « %s » trong phần « %s » thành « %s ».\n" | ||
4933 | |||
4934 | #: src/identity-provider/gnunet-idp.c:370 | ||
4935 | msgid "Add attribute" | ||
4936 | msgstr "" | ||
4937 | |||
4938 | #: src/identity-provider/gnunet-idp.c:376 | ||
4939 | msgid "Attribute value" | ||
4940 | msgstr "" | ||
4941 | |||
4942 | #: src/identity-provider/gnunet-idp.c:381 | ||
4943 | msgid "Ego" | ||
4944 | msgstr "" | ||
4945 | |||
4946 | #: src/identity-provider/gnunet-idp.c:386 | ||
4947 | msgid "Audience (relying party)" | ||
4948 | msgstr "" | ||
4949 | |||
4950 | #: src/identity-provider/gnunet-idp.c:390 | ||
4951 | msgid "List attributes for Ego" | ||
4952 | msgstr "" | ||
4953 | |||
4954 | #: src/identity-provider/gnunet-idp.c:395 | ||
4955 | msgid "Issue a ticket" | ||
4956 | msgstr "" | ||
4957 | |||
4958 | #: src/identity-provider/gnunet-idp.c:400 | ||
4959 | msgid "Consume a ticket" | ||
4960 | msgstr "" | ||
4961 | |||
4962 | #: src/identity-provider/gnunet-idp.c:405 | ||
4963 | msgid "Revoke a ticket" | ||
4964 | msgstr "" | ||
4965 | |||
4966 | #: src/identity-provider/identity_provider_api.c:429 | ||
4967 | #, fuzzy | ||
4968 | msgid "failed to store record\n" | ||
4969 | msgstr "Lỗi bắt đầu thu thập.\n" | ||
4970 | |||
4971 | #: src/identity-provider/plugin_rest_identity_provider.c:1175 | ||
4972 | #, fuzzy | ||
4973 | msgid "Identity Provider REST API initialized\n" | ||
4974 | msgstr "Lỗi sơ khởi lõi.\n" | ||
4975 | |||
4976 | #: src/identity/gnunet-identity.c:179 | 4808 | #: src/identity/gnunet-identity.c:179 |
4977 | #, fuzzy, c-format | 4809 | #, fuzzy, c-format |
4978 | msgid "Failed to create ego: %s\n" | 4810 | msgid "Failed to create ego: %s\n" |
@@ -5060,11 +4892,34 @@ msgstr "Không thể lưu tập tin cấu hình « %s »:" | |||
5060 | msgid "Failed to create directory `%s' for storing egos\n" | 4892 | msgid "Failed to create directory `%s' for storing egos\n" |
5061 | msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" | 4893 | msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" |
5062 | 4894 | ||
5063 | #: src/identity/plugin_rest_identity.c:964 | 4895 | #: src/identity/plugin_rest_identity.c:967 |
5064 | #, fuzzy | 4896 | #, fuzzy |
5065 | msgid "Identity REST API initialized\n" | 4897 | msgid "Identity REST API initialized\n" |
5066 | msgstr "Lỗi sơ khởi lõi.\n" | 4898 | msgstr "Lỗi sơ khởi lõi.\n" |
5067 | 4899 | ||
4900 | #: src/identity-provider/gnunet-identity-token.c:66 | ||
4901 | #, fuzzy | ||
4902 | msgid "Option `-t' is required\n" | ||
4903 | msgstr "Bị từ chối đặt tùy chọn « %s » trong phần « %s » thành « %s ».\n" | ||
4904 | |||
4905 | #: src/identity-provider/gnunet-identity-token.c:77 | ||
4906 | #, fuzzy, c-format | ||
4907 | msgid "Token `%s' is malformed\n" | ||
4908 | msgstr "Đối số không hợp lệ cho « %s ».\n" | ||
4909 | |||
4910 | #: src/identity-provider/gnunet-identity-token.c:166 | ||
4911 | msgid "GNUid token" | ||
4912 | msgstr "" | ||
4913 | |||
4914 | #: src/identity-provider/gnunet-identity-token.c:171 | ||
4915 | msgid "Print token contents" | ||
4916 | msgstr "" | ||
4917 | |||
4918 | #: src/identity-provider/plugin_rest_identity_provider.c:1166 | ||
4919 | #, fuzzy | ||
4920 | msgid "Identity Token REST API initialized\n" | ||
4921 | msgstr "Lỗi sơ khởi lõi.\n" | ||
4922 | |||
5068 | #: src/json/json.c:119 | 4923 | #: src/json/json.c:119 |
5069 | #, fuzzy, c-format | 4924 | #, fuzzy, c-format |
5070 | msgid "Failed to parse JSON in option `%s': %s (%s)\n" | 4925 | msgid "Failed to parse JSON in option `%s': %s (%s)\n" |
@@ -5166,79 +5021,19 @@ msgstr "Không thể tạo miền tên.\n" | |||
5166 | msgid "flat plugin running\n" | 5021 | msgid "flat plugin running\n" |
5167 | msgstr "kho dữ liệu sqlite" | 5022 | msgstr "kho dữ liệu sqlite" |
5168 | 5023 | ||
5169 | #: src/namestore/gnunet-namestore-fcfsd.c:508 | ||
5170 | #, fuzzy, c-format | ||
5171 | msgid "Unsupported form value `%s'\n" | ||
5172 | msgstr "Lệnh không được hỗ trợ « %s ». Đang hủy bỏ.\n" | ||
5173 | |||
5174 | #: src/namestore/gnunet-namestore-fcfsd.c:535 | ||
5175 | #, fuzzy, c-format | ||
5176 | msgid "Failed to create record for domain `%s': %s\n" | ||
5177 | msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n" | ||
5178 | |||
5179 | #: src/namestore/gnunet-namestore-fcfsd.c:555 | ||
5180 | msgid "Error when mapping zone to name\n" | ||
5181 | msgstr "" | ||
5182 | |||
5183 | #: src/namestore/gnunet-namestore-fcfsd.c:585 | ||
5184 | #, c-format | ||
5185 | msgid "Found existing name `%s' for the given key\n" | ||
5186 | msgstr "" | ||
5187 | |||
5188 | #: src/namestore/gnunet-namestore-fcfsd.c:662 | ||
5189 | #, c-format | ||
5190 | msgid "Found %u existing records for domain `%s'\n" | ||
5191 | msgstr "" | ||
5192 | |||
5193 | #: src/namestore/gnunet-namestore-fcfsd.c:718 | ||
5194 | #, fuzzy, c-format | ||
5195 | msgid "Failed to create page for `%s'\n" | ||
5196 | msgstr "Không thể tạo miền tên.\n" | ||
5197 | |||
5198 | #: src/namestore/gnunet-namestore-fcfsd.c:734 | ||
5199 | #, fuzzy, c-format | ||
5200 | msgid "Failed to setup post processor for `%s'\n" | ||
5201 | msgstr "Lỗi cập nhật dữ liệu cho mô-đun « %s »\n" | ||
5202 | |||
5203 | #: src/namestore/gnunet-namestore-fcfsd.c:770 | ||
5204 | msgid "Domain name must not contain `.'\n" | ||
5205 | msgstr "" | ||
5206 | |||
5207 | #: src/namestore/gnunet-namestore-fcfsd.c:778 | ||
5208 | msgid "Domain name must not contain `+'\n" | ||
5209 | msgstr "" | ||
5210 | |||
5211 | #: src/namestore/gnunet-namestore-fcfsd.c:974 | ||
5212 | msgid "No ego configured for `fcfsd` subsystem\n" | ||
5213 | msgstr "" | ||
5214 | |||
5215 | #: src/namestore/gnunet-namestore-fcfsd.c:1000 | ||
5216 | #, fuzzy | ||
5217 | msgid "Failed to start HTTP server\n" | ||
5218 | msgstr "Lỗi bắt đầu thu thập.\n" | ||
5219 | |||
5220 | #: src/namestore/gnunet-namestore-fcfsd.c:1042 | ||
5221 | #, fuzzy | ||
5222 | msgid "Failed to connect to identity\n" | ||
5223 | msgstr "Lỗi kết nối đến gnunetd.\n" | ||
5224 | |||
5225 | #: src/namestore/gnunet-namestore-fcfsd.c:1074 | ||
5226 | msgid "GNU Name System First Come First Serve name registration service" | ||
5227 | msgstr "" | ||
5228 | |||
5229 | #: src/namestore/gnunet-namestore.c:301 | 5024 | #: src/namestore/gnunet-namestore.c:301 |
5230 | #, fuzzy, c-format | 5025 | #, fuzzy, c-format |
5231 | msgid "Adding record failed: %s\n" | 5026 | msgid "Adding record failed: %s\n" |
5232 | msgstr "Gặp lỗi khi tải lên tập tin: %s\n" | 5027 | msgstr "Gặp lỗi khi tải lên tập tin: %s\n" |
5233 | 5028 | ||
5234 | #: src/namestore/gnunet-namestore.c:330 | 5029 | #: src/namestore/gnunet-namestore.c:330 |
5235 | #: src/namestore/plugin_rest_namestore.c:567 | 5030 | #: src/namestore/plugin_rest_namestore.c:562 |
5236 | #, fuzzy, c-format | 5031 | #, fuzzy, c-format |
5237 | msgid "Deleting record failed, record does not exist%s%s\n" | 5032 | msgid "Deleting record failed, record does not exist%s%s\n" |
5238 | msgstr "Gặp lỗi khi tải lên tập tin: %s\n" | 5033 | msgstr "Gặp lỗi khi tải lên tập tin: %s\n" |
5239 | 5034 | ||
5240 | #: src/namestore/gnunet-namestore.c:337 | 5035 | #: src/namestore/gnunet-namestore.c:337 |
5241 | #: src/namestore/plugin_rest_namestore.c:576 | 5036 | #: src/namestore/plugin_rest_namestore.c:571 |
5242 | #, fuzzy, c-format | 5037 | #, fuzzy, c-format |
5243 | msgid "Deleting record failed%s%s\n" | 5038 | msgid "Deleting record failed%s%s\n" |
5244 | msgstr "Gặp lỗi khi tải lên tập tin: %s\n" | 5039 | msgstr "Gặp lỗi khi tải lên tập tin: %s\n" |
@@ -5256,7 +5051,7 @@ msgid "Records already exist under `%s', cannot add `%s' record.\n" | |||
5256 | msgstr "" | 5051 | msgstr "" |
5257 | 5052 | ||
5258 | #: src/namestore/gnunet-namestore.c:698 | 5053 | #: src/namestore/gnunet-namestore.c:698 |
5259 | #: src/namestore/plugin_rest_namestore.c:602 | 5054 | #: src/namestore/plugin_rest_namestore.c:597 |
5260 | #, c-format | 5055 | #, c-format |
5261 | msgid "There are no records under label `%s' that could be deleted.\n" | 5056 | msgid "There are no records under label `%s' that could be deleted.\n" |
5262 | msgstr "" | 5057 | msgstr "" |
@@ -5267,11 +5062,24 @@ msgid "" | |||
5267 | "There are no records under label `%s' that match the request for deletion.\n" | 5062 | "There are no records under label `%s' that match the request for deletion.\n" |
5268 | msgstr "" | 5063 | msgstr "" |
5269 | 5064 | ||
5065 | #: src/namestore/gnunet-namestore.c:776 | ||
5066 | #: src/namestore/plugin_rest_namestore.c:1004 | ||
5067 | #, c-format | ||
5068 | msgid "Ego `%s' not known to identity service\n" | ||
5069 | msgstr "" | ||
5070 | |||
5270 | #: src/namestore/gnunet-namestore.c:791 | 5071 | #: src/namestore/gnunet-namestore.c:791 |
5271 | #, fuzzy, c-format | 5072 | #, fuzzy, c-format |
5272 | msgid "No options given\n" | 5073 | msgid "No options given\n" |
5273 | msgstr "chưa đưa ra tên" | 5074 | msgstr "chưa đưa ra tên" |
5274 | 5075 | ||
5076 | #: src/namestore/gnunet-namestore.c:802 | ||
5077 | #: src/namestore/gnunet-namestore-fcfsd.c:1034 | ||
5078 | #: src/namestore/plugin_rest_namestore.c:1017 | ||
5079 | #, fuzzy | ||
5080 | msgid "Failed to connect to namestore\n" | ||
5081 | msgstr "Không kết nối được đến trình nền gnunetd." | ||
5082 | |||
5275 | #: src/namestore/gnunet-namestore.c:810 src/namestore/gnunet-namestore.c:819 | 5083 | #: src/namestore/gnunet-namestore.c:810 src/namestore/gnunet-namestore.c:819 |
5276 | #: src/namestore/gnunet-namestore.c:838 src/namestore/gnunet-namestore.c:861 | 5084 | #: src/namestore/gnunet-namestore.c:838 src/namestore/gnunet-namestore.c:861 |
5277 | #: src/namestore/gnunet-namestore.c:915 | 5085 | #: src/namestore/gnunet-namestore.c:915 |
@@ -5285,14 +5093,14 @@ msgid "add" | |||
5285 | msgstr "" | 5093 | msgstr "" |
5286 | 5094 | ||
5287 | #: src/namestore/gnunet-namestore.c:829 | 5095 | #: src/namestore/gnunet-namestore.c:829 |
5288 | #: src/namestore/plugin_rest_namestore.c:676 | 5096 | #: src/namestore/plugin_rest_namestore.c:671 |
5289 | #, fuzzy, c-format | 5097 | #, fuzzy, c-format |
5290 | msgid "Unsupported type `%s'\n" | 5098 | msgid "Unsupported type `%s'\n" |
5291 | msgstr "Lệnh không được hỗ trợ « %s ». Đang hủy bỏ.\n" | 5099 | msgstr "Lệnh không được hỗ trợ « %s ». Đang hủy bỏ.\n" |
5292 | 5100 | ||
5293 | #: src/namestore/gnunet-namestore.c:851 | 5101 | #: src/namestore/gnunet-namestore.c:851 |
5294 | #: src/namestore/plugin_rest_namestore.c:694 | 5102 | #: src/namestore/plugin_rest_namestore.c:689 |
5295 | #: src/namestore/plugin_rest_namestore.c:734 | 5103 | #: src/namestore/plugin_rest_namestore.c:729 |
5296 | #, c-format | 5104 | #, c-format |
5297 | msgid "Value `%s' invalid for record type `%s'\n" | 5105 | msgid "Value `%s' invalid for record type `%s'\n" |
5298 | msgstr "" | 5106 | msgstr "" |
@@ -5322,13 +5130,13 @@ msgid "Invalid nick `%s'\n" | |||
5322 | msgstr "Dữ liệu nhập không hợp lệ.\n" | 5130 | msgstr "Dữ liệu nhập không hợp lệ.\n" |
5323 | 5131 | ||
5324 | #: src/namestore/gnunet-namestore.c:1051 | 5132 | #: src/namestore/gnunet-namestore.c:1051 |
5325 | #: src/namestore/plugin_rest_namestore.c:1052 | 5133 | #: src/namestore/plugin_rest_namestore.c:1047 |
5326 | #, c-format | 5134 | #, c-format |
5327 | msgid "No default ego configured in identity service\n" | 5135 | msgid "No default ego configured in identity service\n" |
5328 | msgstr "" | 5136 | msgstr "" |
5329 | 5137 | ||
5330 | #: src/namestore/gnunet-namestore.c:1108 | 5138 | #: src/namestore/gnunet-namestore.c:1108 |
5331 | #: src/namestore/plugin_rest_namestore.c:1148 | 5139 | #: src/namestore/plugin_rest_namestore.c:1143 |
5332 | #, fuzzy, c-format | 5140 | #, fuzzy, c-format |
5333 | msgid "Cannot connect to identity service\n" | 5141 | msgid "Cannot connect to identity service\n" |
5334 | msgstr "Không thể kết nối tới %s:%u: %s\n" | 5142 | msgstr "Không thể kết nối tới %s:%u: %s\n" |
@@ -5391,6 +5199,66 @@ msgstr "" | |||
5391 | msgid "name of the ego controlling the zone" | 5199 | msgid "name of the ego controlling the zone" |
5392 | msgstr "" | 5200 | msgstr "" |
5393 | 5201 | ||
5202 | #: src/namestore/gnunet-namestore-fcfsd.c:508 | ||
5203 | #, fuzzy, c-format | ||
5204 | msgid "Unsupported form value `%s'\n" | ||
5205 | msgstr "Lệnh không được hỗ trợ « %s ». Đang hủy bỏ.\n" | ||
5206 | |||
5207 | #: src/namestore/gnunet-namestore-fcfsd.c:535 | ||
5208 | #, fuzzy, c-format | ||
5209 | msgid "Failed to create record for domain `%s': %s\n" | ||
5210 | msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n" | ||
5211 | |||
5212 | #: src/namestore/gnunet-namestore-fcfsd.c:555 | ||
5213 | msgid "Error when mapping zone to name\n" | ||
5214 | msgstr "" | ||
5215 | |||
5216 | #: src/namestore/gnunet-namestore-fcfsd.c:585 | ||
5217 | #, c-format | ||
5218 | msgid "Found existing name `%s' for the given key\n" | ||
5219 | msgstr "" | ||
5220 | |||
5221 | #: src/namestore/gnunet-namestore-fcfsd.c:662 | ||
5222 | #, c-format | ||
5223 | msgid "Found %u existing records for domain `%s'\n" | ||
5224 | msgstr "" | ||
5225 | |||
5226 | #: src/namestore/gnunet-namestore-fcfsd.c:718 | ||
5227 | #, fuzzy, c-format | ||
5228 | msgid "Failed to create page for `%s'\n" | ||
5229 | msgstr "Không thể tạo miền tên.\n" | ||
5230 | |||
5231 | #: src/namestore/gnunet-namestore-fcfsd.c:734 | ||
5232 | #, fuzzy, c-format | ||
5233 | msgid "Failed to setup post processor for `%s'\n" | ||
5234 | msgstr "Lỗi cập nhật dữ liệu cho mô-đun « %s »\n" | ||
5235 | |||
5236 | #: src/namestore/gnunet-namestore-fcfsd.c:770 | ||
5237 | msgid "Domain name must not contain `.'\n" | ||
5238 | msgstr "" | ||
5239 | |||
5240 | #: src/namestore/gnunet-namestore-fcfsd.c:778 | ||
5241 | msgid "Domain name must not contain `+'\n" | ||
5242 | msgstr "" | ||
5243 | |||
5244 | #: src/namestore/gnunet-namestore-fcfsd.c:974 | ||
5245 | msgid "No ego configured for `fcfsd` subsystem\n" | ||
5246 | msgstr "" | ||
5247 | |||
5248 | #: src/namestore/gnunet-namestore-fcfsd.c:1000 | ||
5249 | #, fuzzy | ||
5250 | msgid "Failed to start HTTP server\n" | ||
5251 | msgstr "Lỗi bắt đầu thu thập.\n" | ||
5252 | |||
5253 | #: src/namestore/gnunet-namestore-fcfsd.c:1042 | ||
5254 | #, fuzzy | ||
5255 | msgid "Failed to connect to identity\n" | ||
5256 | msgstr "Lỗi kết nối đến gnunetd.\n" | ||
5257 | |||
5258 | #: src/namestore/gnunet-namestore-fcfsd.c:1074 | ||
5259 | msgid "GNU Name System First Come First Serve name registration service" | ||
5260 | msgstr "" | ||
5261 | |||
5394 | #: src/namestore/gnunet-service-namestore.c:615 | 5262 | #: src/namestore/gnunet-service-namestore.c:615 |
5395 | #, fuzzy, c-format | 5263 | #, fuzzy, c-format |
5396 | msgid "Failed to replicate block in namecache: %s\n" | 5264 | msgid "Failed to replicate block in namecache: %s\n" |
@@ -5405,7 +5273,7 @@ msgstr "" | |||
5405 | msgid "flat file database running\n" | 5273 | msgid "flat file database running\n" |
5406 | msgstr "kho dữ liệu sqlite" | 5274 | msgstr "kho dữ liệu sqlite" |
5407 | 5275 | ||
5408 | #: src/namestore/plugin_rest_namestore.c:1193 | 5276 | #: src/namestore/plugin_rest_namestore.c:1188 |
5409 | #, fuzzy | 5277 | #, fuzzy |
5410 | msgid "Namestore REST API initialized\n" | 5278 | msgid "Namestore REST API initialized\n" |
5411 | msgstr "Lỗi sơ khởi lõi.\n" | 5279 | msgstr "Lỗi sơ khởi lõi.\n" |
@@ -5692,6 +5560,11 @@ msgstr "" | |||
5692 | msgid "`upnpc' command not found\n" | 5560 | msgid "`upnpc' command not found\n" |
5693 | msgstr "" | 5561 | msgstr "" |
5694 | 5562 | ||
5563 | #: src/nse/gnunet-nse.c:122 | ||
5564 | #, fuzzy | ||
5565 | msgid "Show network size estimates from NSE service." | ||
5566 | msgstr "# các yêu cầu get (lấy) dht được nhận" | ||
5567 | |||
5695 | #: src/nse/gnunet-nse-profiler.c:842 | 5568 | #: src/nse/gnunet-nse-profiler.c:842 |
5696 | #, fuzzy | 5569 | #, fuzzy |
5697 | msgid "limit to the number of connections to NSE services, 0 for none" | 5570 | msgid "limit to the number of connections to NSE services, 0 for none" |
@@ -5718,17 +5591,71 @@ msgstr "" | |||
5718 | msgid "Measure quality and performance of the NSE service." | 5591 | msgid "Measure quality and performance of the NSE service." |
5719 | msgstr "Không thể truy cập đến dịch vụ" | 5592 | msgstr "Không thể truy cập đến dịch vụ" |
5720 | 5593 | ||
5721 | #: src/nse/gnunet-nse.c:122 | ||
5722 | #, fuzzy | ||
5723 | msgid "Show network size estimates from NSE service." | ||
5724 | msgstr "# các yêu cầu get (lấy) dht được nhận" | ||
5725 | |||
5726 | #: src/nse/gnunet-service-nse.c:1534 | 5594 | #: src/nse/gnunet-service-nse.c:1534 |
5727 | #: src/revocation/gnunet-service-revocation.c:838 src/util/gnunet-scrypt.c:276 | 5595 | #: src/revocation/gnunet-service-revocation.c:840 src/util/gnunet-scrypt.c:276 |
5728 | #, fuzzy | 5596 | #, fuzzy |
5729 | msgid "Value is too large.\n" | 5597 | msgid "Value is too large.\n" |
5730 | msgstr "Giá trị không nằm trong phạm vi được phép." | 5598 | msgstr "Giá trị không nằm trong phạm vi được phép." |
5731 | 5599 | ||
5600 | #: src/peerinfo/gnunet-service-peerinfo.c:178 | ||
5601 | #, fuzzy, c-format | ||
5602 | msgid "Removing expired address of transport `%s'\n" | ||
5603 | msgstr "Đã nạp truyền tải « %s »\n" | ||
5604 | |||
5605 | #: src/peerinfo/gnunet-service-peerinfo.c:310 | ||
5606 | #, fuzzy, c-format | ||
5607 | msgid "Failed to parse HELLO in file `%s': %s\n" | ||
5608 | msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" | ||
5609 | |||
5610 | #: src/peerinfo/gnunet-service-peerinfo.c:331 | ||
5611 | #: src/peerinfo/gnunet-service-peerinfo.c:362 | ||
5612 | #, fuzzy, c-format | ||
5613 | msgid "Failed to parse HELLO in file `%s'\n" | ||
5614 | msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" | ||
5615 | |||
5616 | #: src/peerinfo/gnunet-service-peerinfo.c:446 | ||
5617 | msgid "# peers known" | ||
5618 | msgstr "" | ||
5619 | |||
5620 | #: src/peerinfo/gnunet-service-peerinfo.c:489 | ||
5621 | #, c-format | ||
5622 | msgid "" | ||
5623 | "File `%s' in directory `%s' does not match naming convention. Removed.\n" | ||
5624 | msgstr "" | ||
5625 | "Tập tin « %s » trong thư mục « %s » không tùy theo quy ước đặt tên. Bị gỡ " | ||
5626 | "bỏ.\n" | ||
5627 | |||
5628 | #: src/peerinfo/gnunet-service-peerinfo.c:655 | ||
5629 | #, fuzzy, c-format | ||
5630 | msgid "Scanning directory `%s'\n" | ||
5631 | msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" | ||
5632 | |||
5633 | #: src/peerinfo/gnunet-service-peerinfo.c:663 | ||
5634 | #, c-format | ||
5635 | msgid "Still no peers found in `%s'!\n" | ||
5636 | msgstr "Vẫn còn không tìm thấy đồng đẳng trong « %s ».\n" | ||
5637 | |||
5638 | #: src/peerinfo/gnunet-service-peerinfo.c:1080 | ||
5639 | #, fuzzy, c-format | ||
5640 | msgid "Cleaning up directory `%s'\n" | ||
5641 | msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" | ||
5642 | |||
5643 | #: src/peerinfo/gnunet-service-peerinfo.c:1409 | ||
5644 | #, c-format | ||
5645 | msgid "Importing HELLOs from `%s'\n" | ||
5646 | msgstr "" | ||
5647 | |||
5648 | #: src/peerinfo/gnunet-service-peerinfo.c:1422 | ||
5649 | msgid "Skipping import of included HELLOs\n" | ||
5650 | msgstr "" | ||
5651 | |||
5652 | #: src/peerinfo/peerinfo_api.c:220 | ||
5653 | #, fuzzy | ||
5654 | msgid "Failed to receive response from `PEERINFO' service." | ||
5655 | msgstr "" | ||
5656 | "\n" | ||
5657 | "Không nhận được đáp ứng từ gnunetd.\n" | ||
5658 | |||
5732 | #: src/peerinfo-tool/gnunet-peerinfo.c:239 | 5659 | #: src/peerinfo-tool/gnunet-peerinfo.c:239 |
5733 | #, fuzzy, c-format | 5660 | #, fuzzy, c-format |
5734 | msgid "%sPeer `%s'\n" | 5661 | msgid "%sPeer `%s'\n" |
@@ -5820,65 +5747,6 @@ msgstr "Đang nạp các truyền tải « %s »\n" | |||
5820 | msgid "Failed to load transport plugin for `%s'\n" | 5747 | msgid "Failed to load transport plugin for `%s'\n" |
5821 | msgstr "Không thể nạp phần bổ sung truyền tải « %s »\n" | 5748 | msgstr "Không thể nạp phần bổ sung truyền tải « %s »\n" |
5822 | 5749 | ||
5823 | #: src/peerinfo/gnunet-service-peerinfo.c:178 | ||
5824 | #, fuzzy, c-format | ||
5825 | msgid "Removing expired address of transport `%s'\n" | ||
5826 | msgstr "Đã nạp truyền tải « %s »\n" | ||
5827 | |||
5828 | #: src/peerinfo/gnunet-service-peerinfo.c:310 | ||
5829 | #, fuzzy, c-format | ||
5830 | msgid "Failed to parse HELLO in file `%s': %s\n" | ||
5831 | msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" | ||
5832 | |||
5833 | #: src/peerinfo/gnunet-service-peerinfo.c:331 | ||
5834 | #: src/peerinfo/gnunet-service-peerinfo.c:362 | ||
5835 | #, fuzzy, c-format | ||
5836 | msgid "Failed to parse HELLO in file `%s'\n" | ||
5837 | msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" | ||
5838 | |||
5839 | #: src/peerinfo/gnunet-service-peerinfo.c:446 | ||
5840 | msgid "# peers known" | ||
5841 | msgstr "" | ||
5842 | |||
5843 | #: src/peerinfo/gnunet-service-peerinfo.c:489 | ||
5844 | #, c-format | ||
5845 | msgid "" | ||
5846 | "File `%s' in directory `%s' does not match naming convention. Removed.\n" | ||
5847 | msgstr "" | ||
5848 | "Tập tin « %s » trong thư mục « %s » không tùy theo quy ước đặt tên. Bị gỡ " | ||
5849 | "bỏ.\n" | ||
5850 | |||
5851 | #: src/peerinfo/gnunet-service-peerinfo.c:655 | ||
5852 | #, fuzzy, c-format | ||
5853 | msgid "Scanning directory `%s'\n" | ||
5854 | msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" | ||
5855 | |||
5856 | #: src/peerinfo/gnunet-service-peerinfo.c:663 | ||
5857 | #, c-format | ||
5858 | msgid "Still no peers found in `%s'!\n" | ||
5859 | msgstr "Vẫn còn không tìm thấy đồng đẳng trong « %s ».\n" | ||
5860 | |||
5861 | #: src/peerinfo/gnunet-service-peerinfo.c:1076 | ||
5862 | #, fuzzy, c-format | ||
5863 | msgid "Cleaning up directory `%s'\n" | ||
5864 | msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" | ||
5865 | |||
5866 | #: src/peerinfo/gnunet-service-peerinfo.c:1405 | ||
5867 | #, c-format | ||
5868 | msgid "Importing HELLOs from `%s'\n" | ||
5869 | msgstr "" | ||
5870 | |||
5871 | #: src/peerinfo/gnunet-service-peerinfo.c:1418 | ||
5872 | msgid "Skipping import of included HELLOs\n" | ||
5873 | msgstr "" | ||
5874 | |||
5875 | #: src/peerinfo/peerinfo_api.c:220 | ||
5876 | #, fuzzy | ||
5877 | msgid "Failed to receive response from `PEERINFO' service." | ||
5878 | msgstr "" | ||
5879 | "\n" | ||
5880 | "Không nhận được đáp ứng từ gnunetd.\n" | ||
5881 | |||
5882 | #: src/peerstore/gnunet-peerstore.c:91 | 5750 | #: src/peerstore/gnunet-peerstore.c:91 |
5883 | msgid "peerstore" | 5751 | msgid "peerstore" |
5884 | msgstr "" | 5752 | msgstr "" |
@@ -6329,12 +6197,12 @@ msgstr "# các khoá phiên chạy được chấp nhận" | |||
6329 | msgid "# revocation set unions completed" | 6197 | msgid "# revocation set unions completed" |
6330 | msgstr "# các sự truyền PONG bị lỗi" | 6198 | msgstr "# các sự truyền PONG bị lỗi" |
6331 | 6199 | ||
6332 | #: src/revocation/gnunet-service-revocation.c:524 | 6200 | #: src/revocation/gnunet-service-revocation.c:525 |
6333 | #: src/revocation/gnunet-service-revocation.c:771 | 6201 | #: src/revocation/gnunet-service-revocation.c:773 |
6334 | msgid "SET service crashed, terminating revocation service\n" | 6202 | msgid "SET service crashed, terminating revocation service\n" |
6335 | msgstr "" | 6203 | msgstr "" |
6336 | 6204 | ||
6337 | #: src/revocation/gnunet-service-revocation.c:862 | 6205 | #: src/revocation/gnunet-service-revocation.c:864 |
6338 | #, fuzzy | 6206 | #, fuzzy |
6339 | msgid "Could not open revocation database file!" | 6207 | msgid "Could not open revocation database file!" |
6340 | msgstr "« %s »: Không thể kết nối.\n" | 6208 | msgstr "« %s »: Không thể kết nối.\n" |
@@ -6398,10 +6266,10 @@ msgstr "" | |||
6398 | msgid "Calculate the Vectorproduct with a GNUnet peer." | 6266 | msgid "Calculate the Vectorproduct with a GNUnet peer." |
6399 | msgstr "" | 6267 | msgstr "" |
6400 | 6268 | ||
6401 | #: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1172 | ||
6402 | #: src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c:1063 | ||
6403 | #: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1401 | 6269 | #: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1401 |
6404 | #: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1345 | 6270 | #: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1345 |
6271 | #: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1172 | ||
6272 | #: src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c:1063 | ||
6405 | #, fuzzy | 6273 | #, fuzzy |
6406 | msgid "Connect to CADET failed\n" | 6274 | msgid "Connect to CADET failed\n" |
6407 | msgstr " Không kết nối được (lỗi ?)\n" | 6275 | msgstr " Không kết nối được (lỗi ?)\n" |
@@ -6618,7 +6486,7 @@ msgstr "« %s » không giải quyết được phương pháp « %s », với l | |||
6618 | msgid "Wrote %llu bytes of statistics to `%s'\n" | 6486 | msgid "Wrote %llu bytes of statistics to `%s'\n" |
6619 | msgstr "Đã tải %llu byte xuống « %s ».\n" | 6487 | msgstr "Đã tải %llu byte xuống « %s ».\n" |
6620 | 6488 | ||
6621 | #: src/statistics/gnunet-service-statistics.c:1084 | 6489 | #: src/statistics/gnunet-service-statistics.c:1086 |
6622 | #, fuzzy, c-format | 6490 | #, fuzzy, c-format |
6623 | msgid "Loading %llu bytes of statistics from `%s'\n" | 6491 | msgid "Loading %llu bytes of statistics from `%s'\n" |
6624 | msgstr "Đã tải %llu byte xuống « %s ».\n" | 6492 | msgstr "Đã tải %llu byte xuống « %s ».\n" |
@@ -6747,7 +6615,7 @@ msgid "Invalid argument `%s'; expecting unsigned int\n" | |||
6747 | msgstr "Đối số không hợp lệ cho « %s ».\n" | 6615 | msgstr "Đối số không hợp lệ cho « %s ».\n" |
6748 | 6616 | ||
6749 | #: src/testbed/generate-underlay-topology.c:342 | 6617 | #: src/testbed/generate-underlay-topology.c:342 |
6750 | #: src/testbed/gnunet-testbed-profiler.c:284 | 6618 | #: src/testbed/gnunet-testbed-profiler.c:283 |
6751 | msgid "create COUNT number of peers" | 6619 | msgid "create COUNT number of peers" |
6752 | msgstr "" | 6620 | msgstr "" |
6753 | 6621 | ||
@@ -6785,13 +6653,13 @@ msgid "" | |||
6785 | "deployments" | 6653 | "deployments" |
6786 | msgstr "" | 6654 | msgstr "" |
6787 | 6655 | ||
6788 | #: src/testbed/gnunet-daemon-testbed-underlay.c:231 src/testing/list-keys.c:46 | 6656 | #: src/testbed/gnunet-daemon-testbed-underlay.c:233 src/testing/list-keys.c:46 |
6789 | #: src/testing/testing.c:288 src/util/gnunet-ecc.c:301 | 6657 | #: src/testing/testing.c:288 src/util/gnunet-ecc.c:306 |
6790 | #, c-format | 6658 | #, c-format |
6791 | msgid "Incorrect hostkey file format: %s\n" | 6659 | msgid "Incorrect hostkey file format: %s\n" |
6792 | msgstr "" | 6660 | msgstr "" |
6793 | 6661 | ||
6794 | #: src/testbed/gnunet-daemon-testbed-underlay.c:469 | 6662 | #: src/testbed/gnunet-daemon-testbed-underlay.c:471 |
6795 | msgid "Daemon to restrict underlay network in testbed deployments" | 6663 | msgid "Daemon to restrict underlay network in testbed deployments" |
6796 | msgstr "" | 6664 | msgstr "" |
6797 | 6665 | ||
@@ -6856,17 +6724,6 @@ msgstr "« %s » đang tắt.\n" | |||
6856 | msgid "%.s Unknown result code." | 6724 | msgid "%.s Unknown result code." |
6857 | msgstr "" | 6725 | msgstr "" |
6858 | 6726 | ||
6859 | #: src/testbed/gnunet-testbed-profiler.c:290 | ||
6860 | msgid "tolerate COUNT number of continious timeout failures" | ||
6861 | msgstr "" | ||
6862 | |||
6863 | #: src/testbed/gnunet-testbed-profiler.c:295 | ||
6864 | msgid "" | ||
6865 | "run profiler in non-interactive mode where upon testbed setup the profiler " | ||
6866 | "does not wait for a keystroke but continues to run until a termination " | ||
6867 | "signal is received" | ||
6868 | msgstr "" | ||
6869 | |||
6870 | #: src/testbed/gnunet_testbed_mpi_spawn.c:118 | 6727 | #: src/testbed/gnunet_testbed_mpi_spawn.c:118 |
6871 | #, fuzzy | 6728 | #, fuzzy |
6872 | msgid "Waiting for child to exit.\n" | 6729 | msgid "Waiting for child to exit.\n" |
@@ -6877,6 +6734,17 @@ msgstr "Đang đợi các đồng đẳng kết nối" | |||
6877 | msgid "Spawning process `%s'\n" | 6734 | msgid "Spawning process `%s'\n" |
6878 | msgstr "Đang bắt đầu tài về « %s »\n" | 6735 | msgstr "Đang bắt đầu tài về « %s »\n" |
6879 | 6736 | ||
6737 | #: src/testbed/gnunet-testbed-profiler.c:289 | ||
6738 | msgid "tolerate COUNT number of continious timeout failures" | ||
6739 | msgstr "" | ||
6740 | |||
6741 | #: src/testbed/gnunet-testbed-profiler.c:294 | ||
6742 | msgid "" | ||
6743 | "run profiler in non-interactive mode where upon testbed setup the profiler " | ||
6744 | "does not wait for a keystroke but continues to run until a termination " | ||
6745 | "signal is received" | ||
6746 | msgstr "" | ||
6747 | |||
6880 | #: src/testbed/testbed_api.c:410 | 6748 | #: src/testbed/testbed_api.c:410 |
6881 | #, fuzzy, c-format | 6749 | #, fuzzy, c-format |
6882 | msgid "Adding host %u failed with error: %s\n" | 6750 | msgid "Adding host %u failed with error: %s\n" |
@@ -7179,59 +7047,59 @@ msgstr "# các thông báo PONG đã mật mã được nhận" | |||
7179 | msgid "GNUnet topology control" | 7047 | msgid "GNUnet topology control" |
7180 | msgstr "" | 7048 | msgstr "" |
7181 | 7049 | ||
7050 | #: src/transport/gnunet-service-transport_ats.c:141 | ||
7051 | msgid "# Addresses given to ATS" | ||
7052 | msgstr "" | ||
7053 | |||
7182 | #: src/transport/gnunet-service-transport.c:448 | 7054 | #: src/transport/gnunet-service-transport.c:448 |
7183 | #, fuzzy | 7055 | #, fuzzy |
7184 | msgid "# messages dropped due to slow client" | 7056 | msgid "# messages dropped due to slow client" |
7185 | msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải" | 7057 | msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải" |
7186 | 7058 | ||
7187 | #: src/transport/gnunet-service-transport.c:809 | 7059 | #: src/transport/gnunet-service-transport.c:818 |
7188 | msgid "# bytes payload dropped (other peer was not connected)" | 7060 | msgid "# bytes payload dropped (other peer was not connected)" |
7189 | msgstr "" | 7061 | msgstr "" |
7190 | 7062 | ||
7191 | #: src/transport/gnunet-service-transport.c:1539 | 7063 | #: src/transport/gnunet-service-transport.c:1551 |
7192 | #, fuzzy | 7064 | #, fuzzy |
7193 | msgid "# bytes payload discarded due to not connected peer" | 7065 | msgid "# bytes payload discarded due to not connected peer" |
7194 | msgstr "# Các quảng cáo đồng đẳng bị hủy do trọng tải" | 7066 | msgstr "# Các quảng cáo đồng đẳng bị hủy do trọng tải" |
7195 | 7067 | ||
7196 | #: src/transport/gnunet-service-transport.c:1699 | 7068 | #: src/transport/gnunet-service-transport.c:1711 |
7197 | #, fuzzy | 7069 | #, fuzzy |
7198 | msgid "# bytes total received" | 7070 | msgid "# bytes total received" |
7199 | msgstr "# tổng số nội dung lỗ hổng được nhận" | 7071 | msgstr "# tổng số nội dung lỗ hổng được nhận" |
7200 | 7072 | ||
7201 | #: src/transport/gnunet-service-transport.c:1796 | 7073 | #: src/transport/gnunet-service-transport.c:1808 |
7202 | #, fuzzy | 7074 | #, fuzzy |
7203 | msgid "# bytes payload received" | 7075 | msgid "# bytes payload received" |
7204 | msgstr "# các byte đã giải mã" | 7076 | msgstr "# các byte đã giải mã" |
7205 | 7077 | ||
7206 | #: src/transport/gnunet-service-transport.c:2113 | 7078 | #: src/transport/gnunet-service-transport.c:2125 |
7207 | #: src/transport/gnunet-service-transport.c:2585 | 7079 | #: src/transport/gnunet-service-transport.c:2597 |
7208 | msgid "# disconnects due to blacklist" | 7080 | msgid "# disconnects due to blacklist" |
7209 | msgstr "" | 7081 | msgstr "" |
7210 | 7082 | ||
7211 | #: src/transport/gnunet-service-transport.c:2589 | 7083 | #: src/transport/gnunet-service-transport.c:2601 |
7212 | #, fuzzy, c-format | 7084 | #, fuzzy, c-format |
7213 | msgid "Disallowing connection to peer `%s' on transport %s\n" | 7085 | msgid "Disallowing connection to peer `%s' on transport %s\n" |
7214 | msgstr "Không thể nạp phần bổ sung truyền tải « %s »\n" | 7086 | msgstr "Không thể nạp phần bổ sung truyền tải « %s »\n" |
7215 | 7087 | ||
7216 | #: src/transport/gnunet-service-transport.c:2697 | 7088 | #: src/transport/gnunet-service-transport.c:2709 |
7217 | #, fuzzy, c-format | 7089 | #, fuzzy, c-format |
7218 | msgid "Adding blacklisting entry for peer `%s'\n" | 7090 | msgid "Adding blacklisting entry for peer `%s'\n" |
7219 | msgstr "Không thể lấy địa chỉ của đồng đẳng « %s ».\n" | 7091 | msgstr "Không thể lấy địa chỉ của đồng đẳng « %s ».\n" |
7220 | 7092 | ||
7221 | #: src/transport/gnunet-service-transport.c:2706 | 7093 | #: src/transport/gnunet-service-transport.c:2718 |
7222 | #, c-format | 7094 | #, c-format |
7223 | msgid "Adding blacklisting entry for peer `%s':`%s'\n" | 7095 | msgid "Adding blacklisting entry for peer `%s':`%s'\n" |
7224 | msgstr "" | 7096 | msgstr "" |
7225 | 7097 | ||
7226 | #: src/transport/gnunet-service-transport.c:2771 | 7098 | #: src/transport/gnunet-service-transport.c:2783 |
7227 | #, fuzzy | 7099 | #, fuzzy |
7228 | msgid "Transport service is lacking key configuration settings. Exiting.\n" | 7100 | msgid "Transport service is lacking key configuration settings. Exiting.\n" |
7229 | msgstr "Lưu cấu hình ngay bây giờ không?" | 7101 | msgstr "Lưu cấu hình ngay bây giờ không?" |
7230 | 7102 | ||
7231 | #: src/transport/gnunet-service-transport_ats.c:141 | ||
7232 | msgid "# Addresses given to ATS" | ||
7233 | msgstr "" | ||
7234 | |||
7235 | #: src/transport/gnunet-service-transport_hello.c:195 | 7103 | #: src/transport/gnunet-service-transport_hello.c:195 |
7236 | msgid "# refreshed my HELLO" | 7104 | msgid "# refreshed my HELLO" |
7237 | msgstr "" | 7105 | msgstr "" |
@@ -7382,74 +7250,74 @@ msgstr "# các thông báo PING được tạo" | |||
7382 | msgid "SYN request from peer `%s' ignored due impending shutdown\n" | 7250 | msgid "SYN request from peer `%s' ignored due impending shutdown\n" |
7383 | msgstr "" | 7251 | msgstr "" |
7384 | 7252 | ||
7385 | #: src/transport/gnunet-service-transport_neighbours.c:2620 | 7253 | #: src/transport/gnunet-service-transport_neighbours.c:2623 |
7386 | msgid "# Attempts to switch addresses" | 7254 | msgid "# Attempts to switch addresses" |
7387 | msgstr "" | 7255 | msgstr "" |
7388 | 7256 | ||
7389 | #: src/transport/gnunet-service-transport_neighbours.c:3102 | 7257 | #: src/transport/gnunet-service-transport_neighbours.c:3105 |
7390 | #, fuzzy | 7258 | #, fuzzy |
7391 | msgid "# SYN_ACK messages received" | 7259 | msgid "# SYN_ACK messages received" |
7392 | msgstr "# các thông báo PONG đã mật mã được nhận" | 7260 | msgstr "# các thông báo PONG đã mật mã được nhận" |
7393 | 7261 | ||
7394 | #: src/transport/gnunet-service-transport_neighbours.c:3110 | 7262 | #: src/transport/gnunet-service-transport_neighbours.c:3113 |
7395 | #, fuzzy | 7263 | #, fuzzy |
7396 | msgid "# unexpected SYN_ACK messages (no peer)" | 7264 | msgid "# unexpected SYN_ACK messages (no peer)" |
7397 | msgstr "gửi ĐẾM thông báo" | 7265 | msgstr "gửi ĐẾM thông báo" |
7398 | 7266 | ||
7399 | #: src/transport/gnunet-service-transport_neighbours.c:3128 | 7267 | #: src/transport/gnunet-service-transport_neighbours.c:3131 |
7400 | #: src/transport/gnunet-service-transport_neighbours.c:3152 | 7268 | #: src/transport/gnunet-service-transport_neighbours.c:3155 |
7401 | #, fuzzy | 7269 | #, fuzzy |
7402 | msgid "# unexpected SYN_ACK messages (not ready)" | 7270 | msgid "# unexpected SYN_ACK messages (not ready)" |
7403 | msgstr "gửi ĐẾM thông báo" | 7271 | msgstr "gửi ĐẾM thông báo" |
7404 | 7272 | ||
7405 | #: src/transport/gnunet-service-transport_neighbours.c:3164 | 7273 | #: src/transport/gnunet-service-transport_neighbours.c:3167 |
7406 | #, fuzzy | 7274 | #, fuzzy |
7407 | msgid "# unexpected SYN_ACK messages (waiting on ATS)" | 7275 | msgid "# unexpected SYN_ACK messages (waiting on ATS)" |
7408 | msgstr "gửi ĐẾM thông báo" | 7276 | msgstr "gửi ĐẾM thông báo" |
7409 | 7277 | ||
7410 | #: src/transport/gnunet-service-transport_neighbours.c:3189 | 7278 | #: src/transport/gnunet-service-transport_neighbours.c:3192 |
7411 | msgid "# Successful attempts to switch addresses" | 7279 | msgid "# Successful attempts to switch addresses" |
7412 | msgstr "" | 7280 | msgstr "" |
7413 | 7281 | ||
7414 | #: src/transport/gnunet-service-transport_neighbours.c:3202 | 7282 | #: src/transport/gnunet-service-transport_neighbours.c:3205 |
7415 | #, fuzzy | 7283 | #, fuzzy |
7416 | msgid "# unexpected SYN_ACK messages (disconnecting)" | 7284 | msgid "# unexpected SYN_ACK messages (disconnecting)" |
7417 | msgstr "gửi ĐẾM thông báo" | 7285 | msgstr "gửi ĐẾM thông báo" |
7418 | 7286 | ||
7419 | #: src/transport/gnunet-service-transport_neighbours.c:3374 | 7287 | #: src/transport/gnunet-service-transport_neighbours.c:3377 |
7420 | #, fuzzy | 7288 | #, fuzzy |
7421 | msgid "# ACK messages received" | 7289 | msgid "# ACK messages received" |
7422 | msgstr "# các thông báo PONG đã mật mã được nhận" | 7290 | msgstr "# các thông báo PONG đã mật mã được nhận" |
7423 | 7291 | ||
7424 | #: src/transport/gnunet-service-transport_neighbours.c:3410 | 7292 | #: src/transport/gnunet-service-transport_neighbours.c:3413 |
7425 | #, fuzzy | 7293 | #, fuzzy |
7426 | msgid "# unexpected ACK messages" | 7294 | msgid "# unexpected ACK messages" |
7427 | msgstr "# các thông báo PONG đã mật mã được gửi" | 7295 | msgstr "# các thông báo PONG đã mật mã được gửi" |
7428 | 7296 | ||
7429 | #: src/transport/gnunet-service-transport_neighbours.c:3498 | 7297 | #: src/transport/gnunet-service-transport_neighbours.c:3501 |
7430 | #, fuzzy | 7298 | #, fuzzy |
7431 | msgid "# quota messages ignored (malformed)" | 7299 | msgid "# quota messages ignored (malformed)" |
7432 | msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải" | 7300 | msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải" |
7433 | 7301 | ||
7434 | #: src/transport/gnunet-service-transport_neighbours.c:3505 | 7302 | #: src/transport/gnunet-service-transport_neighbours.c:3508 |
7435 | #, fuzzy | 7303 | #, fuzzy |
7436 | msgid "# QUOTA messages received" | 7304 | msgid "# QUOTA messages received" |
7437 | msgstr "# các thông báo PONG đã mật mã được nhận" | 7305 | msgstr "# các thông báo PONG đã mật mã được nhận" |
7438 | 7306 | ||
7439 | #: src/transport/gnunet-service-transport_neighbours.c:3545 | 7307 | #: src/transport/gnunet-service-transport_neighbours.c:3548 |
7440 | msgid "# disconnect messages ignored (malformed)" | 7308 | msgid "# disconnect messages ignored (malformed)" |
7441 | msgstr "" | 7309 | msgstr "" |
7442 | 7310 | ||
7443 | #: src/transport/gnunet-service-transport_neighbours.c:3552 | 7311 | #: src/transport/gnunet-service-transport_neighbours.c:3555 |
7444 | #, fuzzy | 7312 | #, fuzzy |
7445 | msgid "# DISCONNECT messages received" | 7313 | msgid "# DISCONNECT messages received" |
7446 | msgstr "# các thông báo PONG đã mật mã được nhận" | 7314 | msgstr "# các thông báo PONG đã mật mã được nhận" |
7447 | 7315 | ||
7448 | #: src/transport/gnunet-service-transport_neighbours.c:3563 | 7316 | #: src/transport/gnunet-service-transport_neighbours.c:3566 |
7449 | msgid "# disconnect messages ignored (timestamp)" | 7317 | msgid "# disconnect messages ignored (timestamp)" |
7450 | msgstr "" | 7318 | msgstr "" |
7451 | 7319 | ||
7452 | #: src/transport/gnunet-service-transport_neighbours.c:3697 | 7320 | #: src/transport/gnunet-service-transport_neighbours.c:3700 |
7453 | #, fuzzy | 7321 | #, fuzzy |
7454 | msgid "# disconnected from peer upon explicit request" | 7322 | msgid "# disconnected from peer upon explicit request" |
7455 | msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải" | 7323 | msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải" |
@@ -7484,8 +7352,8 @@ msgstr "" | |||
7484 | 7352 | ||
7485 | #: src/transport/gnunet-service-transport_validation.c:491 | 7353 | #: src/transport/gnunet-service-transport_validation.c:491 |
7486 | #: src/transport/gnunet-service-transport_validation.c:677 | 7354 | #: src/transport/gnunet-service-transport_validation.c:677 |
7487 | #: src/transport/gnunet-service-transport_validation.c:988 | 7355 | #: src/transport/gnunet-service-transport_validation.c:997 |
7488 | #: src/transport/gnunet-service-transport_validation.c:1590 | 7356 | #: src/transport/gnunet-service-transport_validation.c:1609 |
7489 | #, fuzzy | 7357 | #, fuzzy |
7490 | msgid "# validations running" | 7358 | msgid "# validations running" |
7491 | msgstr "kho dữ liệu sqlite" | 7359 | msgstr "kho dữ liệu sqlite" |
@@ -7511,101 +7379,61 @@ msgstr "" | |||
7511 | msgid "# address revalidations started" | 7379 | msgid "# address revalidations started" |
7512 | msgstr "" | 7380 | msgstr "" |
7513 | 7381 | ||
7514 | #: src/transport/gnunet-service-transport_validation.c:1114 | 7382 | #: src/transport/gnunet-service-transport_validation.c:1123 |
7515 | #, fuzzy | 7383 | #, fuzzy |
7516 | msgid "# PING message for different peer received" | 7384 | msgid "# PING message for different peer received" |
7517 | msgstr "# các thông báo PING được tạo" | 7385 | msgstr "# các thông báo PING được tạo" |
7518 | 7386 | ||
7519 | #: src/transport/gnunet-service-transport_validation.c:1165 | 7387 | #: src/transport/gnunet-service-transport_validation.c:1174 |
7520 | #, c-format | 7388 | #, c-format |
7521 | msgid "Plugin `%s' not available, cannot confirm having this address\n" | 7389 | msgid "Plugin `%s' not available, cannot confirm having this address\n" |
7522 | msgstr "" | 7390 | msgstr "" |
7523 | 7391 | ||
7524 | #: src/transport/gnunet-service-transport_validation.c:1178 | 7392 | #: src/transport/gnunet-service-transport_validation.c:1187 |
7525 | msgid "# failed address checks during validation" | 7393 | msgid "# failed address checks during validation" |
7526 | msgstr "" | 7394 | msgstr "" |
7527 | 7395 | ||
7528 | #: src/transport/gnunet-service-transport_validation.c:1181 | 7396 | #: src/transport/gnunet-service-transport_validation.c:1190 |
7529 | #, c-format | 7397 | #, c-format |
7530 | msgid "Address `%s' is not one of my addresses, not confirming PING\n" | 7398 | msgid "Address `%s' is not one of my addresses, not confirming PING\n" |
7531 | msgstr "" | 7399 | msgstr "" |
7532 | 7400 | ||
7533 | #: src/transport/gnunet-service-transport_validation.c:1189 | 7401 | #: src/transport/gnunet-service-transport_validation.c:1198 |
7534 | msgid "# successful address checks during validation" | 7402 | msgid "# successful address checks during validation" |
7535 | msgstr "" | 7403 | msgstr "" |
7536 | 7404 | ||
7537 | #: src/transport/gnunet-service-transport_validation.c:1202 | 7405 | #: src/transport/gnunet-service-transport_validation.c:1211 |
7538 | #, c-format | 7406 | #, c-format |
7539 | msgid "" | 7407 | msgid "" |
7540 | "Not confirming PING from peer `%s' with address `%s' since I cannot confirm " | 7408 | "Not confirming PING from peer `%s' with address `%s' since I cannot confirm " |
7541 | "having this address.\n" | 7409 | "having this address.\n" |
7542 | msgstr "" | 7410 | msgstr "" |
7543 | 7411 | ||
7544 | #: src/transport/gnunet-service-transport_validation.c:1257 | 7412 | #: src/transport/gnunet-service-transport_validation.c:1266 |
7545 | #, fuzzy, c-format | 7413 | #, fuzzy, c-format |
7546 | msgid "Failed to create PONG signature for peer `%s'\n" | 7414 | msgid "Failed to create PONG signature for peer `%s'\n" |
7547 | msgstr "Không thể tạo miền tên.\n" | 7415 | msgstr "Không thể tạo miền tên.\n" |
7548 | 7416 | ||
7549 | #: src/transport/gnunet-service-transport_validation.c:1308 | 7417 | #: src/transport/gnunet-service-transport_validation.c:1317 |
7550 | msgid "# PONGs unicast via reliable transport" | 7418 | msgid "# PONGs unicast via reliable transport" |
7551 | msgstr "" | 7419 | msgstr "" |
7552 | 7420 | ||
7553 | #: src/transport/gnunet-service-transport_validation.c:1317 | 7421 | #: src/transport/gnunet-service-transport_validation.c:1326 |
7554 | msgid "# PONGs multicast to all available addresses" | 7422 | msgid "# PONGs multicast to all available addresses" |
7555 | msgstr "" | 7423 | msgstr "" |
7556 | 7424 | ||
7557 | #: src/transport/gnunet-service-transport_validation.c:1480 | 7425 | #: src/transport/gnunet-service-transport_validation.c:1499 |
7558 | msgid "# PONGs dropped, no matching pending validation" | 7426 | msgid "# PONGs dropped, no matching pending validation" |
7559 | msgstr "" | 7427 | msgstr "" |
7560 | 7428 | ||
7561 | #: src/transport/gnunet-service-transport_validation.c:1498 | 7429 | #: src/transport/gnunet-service-transport_validation.c:1517 |
7562 | msgid "# PONGs dropped, signature expired" | 7430 | msgid "# PONGs dropped, signature expired" |
7563 | msgstr "" | 7431 | msgstr "" |
7564 | 7432 | ||
7565 | #: src/transport/gnunet-service-transport_validation.c:1553 | 7433 | #: src/transport/gnunet-service-transport_validation.c:1572 |
7566 | msgid "# validations succeeded" | 7434 | msgid "# validations succeeded" |
7567 | msgstr "" | 7435 | msgstr "" |
7568 | 7436 | ||
7569 | #: src/transport/gnunet-transport-profiler.c:219 | ||
7570 | #, c-format | ||
7571 | msgid "%llu B in %llu ms == %.2f KB/s!\n" | ||
7572 | msgstr "" | ||
7573 | |||
7574 | #: src/transport/gnunet-transport-profiler.c:617 | ||
7575 | msgid "send data to peer" | ||
7576 | msgstr "" | ||
7577 | |||
7578 | #: src/transport/gnunet-transport-profiler.c:621 | ||
7579 | #, fuzzy | ||
7580 | msgid "receive data from peer" | ||
7581 | msgstr "Yêu cầu cấp %d từ đồng đẳng %d\n" | ||
7582 | |||
7583 | #: src/transport/gnunet-transport-profiler.c:626 | ||
7584 | #, fuzzy | ||
7585 | msgid "iterations" | ||
7586 | msgstr "Tùy chọn chung" | ||
7587 | |||
7588 | #: src/transport/gnunet-transport-profiler.c:631 | ||
7589 | #, fuzzy | ||
7590 | msgid "number of messages to send" | ||
7591 | msgstr "số tin nhắn cần dùng mỗi lần lặp" | ||
7592 | |||
7593 | #: src/transport/gnunet-transport-profiler.c:636 | ||
7594 | #, fuzzy | ||
7595 | msgid "message size to use" | ||
7596 | msgstr "kích cỡ tin nhắn" | ||
7597 | |||
7598 | #: src/transport/gnunet-transport-profiler.c:641 | ||
7599 | #: src/transport/gnunet-transport.c:1462 | ||
7600 | msgid "peer identity" | ||
7601 | msgstr "" | ||
7602 | |||
7603 | #: src/transport/gnunet-transport-profiler.c:652 | ||
7604 | #: src/transport/gnunet-transport.c:1482 | ||
7605 | #, fuzzy | ||
7606 | msgid "Direct access to transport service." | ||
7607 | msgstr "Lỗi kết nối đến gnunetd.\n" | ||
7608 | |||
7609 | #: src/transport/gnunet-transport.c:413 | 7437 | #: src/transport/gnunet-transport.c:413 |
7610 | #, fuzzy, c-format | 7438 | #, fuzzy, c-format |
7611 | msgid "Transmitted %llu bytes/s (%llu bytes in %s)\n" | 7439 | msgid "Transmitted %llu bytes/s (%llu bytes in %s)\n" |
@@ -7745,6 +7573,11 @@ msgstr "In ra thông tin về các đồng đẳng GNUnet." | |||
7745 | msgid "do not resolve hostnames" | 7573 | msgid "do not resolve hostnames" |
7746 | msgstr "không quyết định các tên máy" | 7574 | msgstr "không quyết định các tên máy" |
7747 | 7575 | ||
7576 | #: src/transport/gnunet-transport.c:1462 | ||
7577 | #: src/transport/gnunet-transport-profiler.c:641 | ||
7578 | msgid "peer identity" | ||
7579 | msgstr "" | ||
7580 | |||
7748 | #: src/transport/gnunet-transport.c:1466 | 7581 | #: src/transport/gnunet-transport.c:1466 |
7749 | msgid "monitor plugin sessions" | 7582 | msgid "monitor plugin sessions" |
7750 | msgstr "" | 7583 | msgstr "" |
@@ -7753,6 +7586,41 @@ msgstr "" | |||
7753 | msgid "send data for benchmarking to the other peer (until CTRL-C)" | 7586 | msgid "send data for benchmarking to the other peer (until CTRL-C)" |
7754 | msgstr "" | 7587 | msgstr "" |
7755 | 7588 | ||
7589 | #: src/transport/gnunet-transport.c:1482 | ||
7590 | #: src/transport/gnunet-transport-profiler.c:652 | ||
7591 | #, fuzzy | ||
7592 | msgid "Direct access to transport service." | ||
7593 | msgstr "Lỗi kết nối đến gnunetd.\n" | ||
7594 | |||
7595 | #: src/transport/gnunet-transport-profiler.c:219 | ||
7596 | #, c-format | ||
7597 | msgid "%llu B in %llu ms == %.2f KB/s!\n" | ||
7598 | msgstr "" | ||
7599 | |||
7600 | #: src/transport/gnunet-transport-profiler.c:617 | ||
7601 | msgid "send data to peer" | ||
7602 | msgstr "" | ||
7603 | |||
7604 | #: src/transport/gnunet-transport-profiler.c:621 | ||
7605 | #, fuzzy | ||
7606 | msgid "receive data from peer" | ||
7607 | msgstr "Yêu cầu cấp %d từ đồng đẳng %d\n" | ||
7608 | |||
7609 | #: src/transport/gnunet-transport-profiler.c:626 | ||
7610 | #, fuzzy | ||
7611 | msgid "iterations" | ||
7612 | msgstr "Tùy chọn chung" | ||
7613 | |||
7614 | #: src/transport/gnunet-transport-profiler.c:631 | ||
7615 | #, fuzzy | ||
7616 | msgid "number of messages to send" | ||
7617 | msgstr "số tin nhắn cần dùng mỗi lần lặp" | ||
7618 | |||
7619 | #: src/transport/gnunet-transport-profiler.c:636 | ||
7620 | #, fuzzy | ||
7621 | msgid "message size to use" | ||
7622 | msgstr "kích cỡ tin nhắn" | ||
7623 | |||
7756 | #: src/transport/plugin_transport_http_client.c:1474 | 7624 | #: src/transport/plugin_transport_http_client.c:1474 |
7757 | #: src/transport/plugin_transport_http_server.c:2312 | 7625 | #: src/transport/plugin_transport_http_server.c:2312 |
7758 | #: src/transport/plugin_transport_http_server.c:3526 | 7626 | #: src/transport/plugin_transport_http_server.c:3526 |
@@ -8031,6 +7899,21 @@ msgstr "" | |||
8031 | msgid "TCP transport advertises itself as being on port %llu\n" | 7899 | msgid "TCP transport advertises itself as being on port %llu\n" |
8032 | msgstr "" | 7900 | msgstr "" |
8033 | 7901 | ||
7902 | #: src/transport/plugin_transport_udp_broadcasting.c:168 | ||
7903 | #, fuzzy | ||
7904 | msgid "# Multicast HELLO beacons received via UDP" | ||
7905 | msgstr "# các thông báo PONG đã mật mã được nhận" | ||
7906 | |||
7907 | #: src/transport/plugin_transport_udp_broadcasting.c:548 | ||
7908 | msgid "" | ||
7909 | "Disabling HELLO broadcasting due to friend-to-friend only configuration!\n" | ||
7910 | msgstr "" | ||
7911 | |||
7912 | #: src/transport/plugin_transport_udp_broadcasting.c:565 | ||
7913 | #, c-format | ||
7914 | msgid "Failed to set IPv4 broadcast option for broadcast socket on port %d\n" | ||
7915 | msgstr "" | ||
7916 | |||
8034 | #: src/transport/plugin_transport_udp.c:3366 | 7917 | #: src/transport/plugin_transport_udp.c:3366 |
8035 | #, c-format | 7918 | #, c-format |
8036 | msgid "" | 7919 | msgid "" |
@@ -8079,21 +7962,6 @@ msgstr "« %s » không sẵn sàng.\n" | |||
8079 | msgid "Failed to create UDP network sockets\n" | 7962 | msgid "Failed to create UDP network sockets\n" |
8080 | msgstr "Không thể tạo miền tên.\n" | 7963 | msgstr "Không thể tạo miền tên.\n" |
8081 | 7964 | ||
8082 | #: src/transport/plugin_transport_udp_broadcasting.c:168 | ||
8083 | #, fuzzy | ||
8084 | msgid "# Multicast HELLO beacons received via UDP" | ||
8085 | msgstr "# các thông báo PONG đã mật mã được nhận" | ||
8086 | |||
8087 | #: src/transport/plugin_transport_udp_broadcasting.c:548 | ||
8088 | msgid "" | ||
8089 | "Disabling HELLO broadcasting due to friend-to-friend only configuration!\n" | ||
8090 | msgstr "" | ||
8091 | |||
8092 | #: src/transport/plugin_transport_udp_broadcasting.c:565 | ||
8093 | #, c-format | ||
8094 | msgid "Failed to set IPv4 broadcast option for broadcast socket on port %d\n" | ||
8095 | msgstr "" | ||
8096 | |||
8097 | #: src/transport/plugin_transport_unix.c:1403 | 7965 | #: src/transport/plugin_transport_unix.c:1403 |
8098 | #, fuzzy, c-format | 7966 | #, fuzzy, c-format |
8099 | msgid "Cannot create path to `%s'\n" | 7967 | msgid "Cannot create path to `%s'\n" |
@@ -8208,7 +8076,7 @@ msgid "" | |||
8208 | "`GNUNET_SERVER_receive_done' after %s\n" | 8076 | "`GNUNET_SERVER_receive_done' after %s\n" |
8209 | msgstr "" | 8077 | msgstr "" |
8210 | 8078 | ||
8211 | #: src/transport/tcp_service_legacy.c:339 src/util/service.c:2336 | 8079 | #: src/transport/tcp_service_legacy.c:339 src/util/service.c:2346 |
8212 | #, fuzzy, c-format | 8080 | #, fuzzy, c-format |
8213 | msgid "Unknown address family %d\n" | 8081 | msgid "Unknown address family %d\n" |
8214 | msgstr "\tKhông rõ miền tên « %s »\n" | 8082 | msgstr "\tKhông rõ miền tên « %s »\n" |
@@ -8284,19 +8152,19 @@ msgstr "Không thể thay đổi người dùng/nhóm thành « %s »: %s\n" | |||
8284 | msgid "do daemonize (detach from terminal)" | 8152 | msgid "do daemonize (detach from terminal)" |
8285 | msgstr "" | 8153 | msgstr "" |
8286 | 8154 | ||
8287 | #: src/transport/tcp_service_legacy.c:1448 src/util/program.c:244 | 8155 | #: src/transport/tcp_service_legacy.c:1448 src/util/program.c:255 |
8288 | #: src/util/service.c:1790 | 8156 | #: src/util/service.c:1790 |
8289 | #, fuzzy, c-format | 8157 | #, fuzzy, c-format |
8290 | msgid "Malformed configuration file `%s', exit ...\n" | 8158 | msgid "Malformed configuration file `%s', exit ...\n" |
8291 | msgstr "Không thể lưu tập tin cấu hình « %s »:" | 8159 | msgstr "Không thể lưu tập tin cấu hình « %s »:" |
8292 | 8160 | ||
8293 | #: src/transport/tcp_service_legacy.c:1458 src/util/program.c:261 | 8161 | #: src/transport/tcp_service_legacy.c:1458 src/util/program.c:272 |
8294 | #: src/util/service.c:1801 | 8162 | #: src/util/service.c:1801 |
8295 | #, fuzzy | 8163 | #, fuzzy |
8296 | msgid "Malformed configuration, exit ...\n" | 8164 | msgid "Malformed configuration, exit ...\n" |
8297 | msgstr "Không thể lưu tập tin cấu hình « %s »:" | 8165 | msgstr "Không thể lưu tập tin cấu hình « %s »:" |
8298 | 8166 | ||
8299 | #: src/transport/tcp_service_legacy.c:1463 src/util/program.c:256 | 8167 | #: src/transport/tcp_service_legacy.c:1463 src/util/program.c:267 |
8300 | #: src/util/service.c:1807 | 8168 | #: src/util/service.c:1807 |
8301 | #, fuzzy, c-format | 8169 | #, fuzzy, c-format |
8302 | msgid "Could not access configuration file `%s'\n" | 8170 | msgid "Could not access configuration file `%s'\n" |
@@ -8336,7 +8204,7 @@ msgstr "" | |||
8336 | msgid "Metadata `%s' failed to deserialize" | 8204 | msgid "Metadata `%s' failed to deserialize" |
8337 | msgstr "" | 8205 | msgstr "" |
8338 | 8206 | ||
8339 | #: src/util/client.c:882 | 8207 | #: src/util/client.c:911 |
8340 | #, c-format | 8208 | #, c-format |
8341 | msgid "Need a non-empty hostname for service `%s'.\n" | 8209 | msgid "Need a non-empty hostname for service `%s'.\n" |
8342 | msgstr "" | 8210 | msgstr "" |
@@ -8438,22 +8306,22 @@ msgid "" | |||
8438 | "%llu)\n" | 8306 | "%llu)\n" |
8439 | msgstr "" | 8307 | msgstr "" |
8440 | 8308 | ||
8441 | #: src/util/crypto_ecc.c:777 | 8309 | #: src/util/crypto_ecc.c:810 |
8442 | #, fuzzy, c-format | 8310 | #, fuzzy, c-format |
8443 | msgid "ECC signing failed at %s:%d: %s\n" | 8311 | msgid "ECC signing failed at %s:%d: %s\n" |
8444 | msgstr "%s bị lỗi tại %s:%d: « %s »\n" | 8312 | msgstr "%s bị lỗi tại %s:%d: « %s »\n" |
8445 | 8313 | ||
8446 | #: src/util/crypto_ecc.c:827 | 8314 | #: src/util/crypto_ecc.c:860 |
8447 | #, fuzzy, c-format | 8315 | #, fuzzy, c-format |
8448 | msgid "EdDSA signing failed at %s:%d: %s\n" | 8316 | msgid "EdDSA signing failed at %s:%d: %s\n" |
8449 | msgstr "%s bị lỗi tại %s:%d: « %s »\n" | 8317 | msgstr "%s bị lỗi tại %s:%d: « %s »\n" |
8450 | 8318 | ||
8451 | #: src/util/crypto_ecc.c:901 | 8319 | #: src/util/crypto_ecc.c:934 |
8452 | #, fuzzy, c-format | 8320 | #, fuzzy, c-format |
8453 | msgid "ECDSA signature verification failed at %s:%d: %s\n" | 8321 | msgid "ECDSA signature verification failed at %s:%d: %s\n" |
8454 | msgstr "Lỗi thẩm tra chữ ký RSA tại %s:%d: %s\n" | 8322 | msgstr "Lỗi thẩm tra chữ ký RSA tại %s:%d: %s\n" |
8455 | 8323 | ||
8456 | #: src/util/crypto_ecc.c:958 | 8324 | #: src/util/crypto_ecc.c:991 |
8457 | #, fuzzy, c-format | 8325 | #, fuzzy, c-format |
8458 | msgid "EdDSA signature verification failed at %s:%d: %s\n" | 8326 | msgid "EdDSA signature verification failed at %s:%d: %s\n" |
8459 | msgstr "Lỗi thẩm tra chữ ký RSA tại %s:%d: %s\n" | 8327 | msgstr "Lỗi thẩm tra chữ ký RSA tại %s:%d: %s\n" |
@@ -8678,86 +8546,90 @@ msgstr "" | |||
8678 | msgid "Manipulate GNUnet configuration files" | 8546 | msgid "Manipulate GNUnet configuration files" |
8679 | msgstr "cập nhật một giá trị trong tập tin cấu hình" | 8547 | msgstr "cập nhật một giá trị trong tập tin cấu hình" |
8680 | 8548 | ||
8681 | #: src/util/gnunet-ecc.c:89 | 8549 | #: src/util/gnunet-ecc.c:94 |
8682 | #, fuzzy, c-format | 8550 | #, fuzzy, c-format |
8683 | msgid "Failed to open `%s': %s\n" | 8551 | msgid "Failed to open `%s': %s\n" |
8684 | msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" | 8552 | msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" |
8685 | 8553 | ||
8686 | #: src/util/gnunet-ecc.c:125 | 8554 | #: src/util/gnunet-ecc.c:130 |
8687 | #, c-format | 8555 | #, c-format |
8688 | msgid "Generating %u keys like %s, please wait" | 8556 | msgid "Generating %u keys like %s, please wait" |
8689 | msgstr "" | 8557 | msgstr "" |
8690 | 8558 | ||
8691 | #: src/util/gnunet-ecc.c:138 | 8559 | #: src/util/gnunet-ecc.c:143 |
8692 | #, c-format | 8560 | #, c-format |
8693 | msgid "Generating %u keys, please wait" | 8561 | msgid "Generating %u keys, please wait" |
8694 | msgstr "" | 8562 | msgstr "" |
8695 | 8563 | ||
8696 | #: src/util/gnunet-ecc.c:179 | 8564 | #: src/util/gnunet-ecc.c:184 |
8697 | #, fuzzy, c-format | 8565 | #, fuzzy, c-format |
8698 | msgid "" | 8566 | msgid "" |
8699 | "\n" | 8567 | "\n" |
8700 | "Failed to write to `%s': %s\n" | 8568 | "Failed to write to `%s': %s\n" |
8701 | msgstr "Lỗi chạy %s: %s %d\n" | 8569 | msgstr "Lỗi chạy %s: %s %d\n" |
8702 | 8570 | ||
8703 | #: src/util/gnunet-ecc.c:189 | 8571 | #: src/util/gnunet-ecc.c:194 |
8704 | #, c-format | 8572 | #, c-format |
8705 | msgid "" | 8573 | msgid "" |
8706 | "\n" | 8574 | "\n" |
8707 | "Finished!\n" | 8575 | "Finished!\n" |
8708 | msgstr "" | 8576 | msgstr "" |
8709 | 8577 | ||
8710 | #: src/util/gnunet-ecc.c:192 | 8578 | #: src/util/gnunet-ecc.c:197 |
8711 | #, c-format | 8579 | #, c-format |
8712 | msgid "" | 8580 | msgid "" |
8713 | "\n" | 8581 | "\n" |
8714 | "Error, %u keys not generated\n" | 8582 | "Error, %u keys not generated\n" |
8715 | msgstr "" | 8583 | msgstr "" |
8716 | 8584 | ||
8717 | #: src/util/gnunet-ecc.c:283 | 8585 | #: src/util/gnunet-ecc.c:288 |
8718 | #, fuzzy, c-format | 8586 | #, fuzzy, c-format |
8719 | msgid "Hostkeys file `%s' not found\n" | 8587 | msgid "Hostkeys file `%s' not found\n" |
8720 | msgstr "Khoá phiên chạy từ đồng đẳng « %s » không thể được thẩm tra.\n" | 8588 | msgstr "Khoá phiên chạy từ đồng đẳng « %s » không thể được thẩm tra.\n" |
8721 | 8589 | ||
8722 | #: src/util/gnunet-ecc.c:294 | 8590 | #: src/util/gnunet-ecc.c:299 |
8723 | #, fuzzy, c-format | 8591 | #, fuzzy, c-format |
8724 | msgid "Hostkeys file `%s' is empty\n" | 8592 | msgid "Hostkeys file `%s' is empty\n" |
8725 | msgstr "Định dạng của tập tin « %s » là không hợp lệ.\n" | 8593 | msgstr "Định dạng của tập tin « %s » là không hợp lệ.\n" |
8726 | 8594 | ||
8727 | #: src/util/gnunet-ecc.c:316 | 8595 | #: src/util/gnunet-ecc.c:321 |
8728 | #, fuzzy, c-format | 8596 | #, fuzzy, c-format |
8729 | msgid "Could not read hostkey file: %s\n" | 8597 | msgid "Could not read hostkey file: %s\n" |
8730 | msgstr "Không thể đọc danh sách bạn bè « %s »\n" | 8598 | msgstr "Không thể đọc danh sách bạn bè « %s »\n" |
8731 | 8599 | ||
8732 | #: src/util/gnunet-ecc.c:367 | 8600 | #: src/util/gnunet-ecc.c:372 |
8733 | msgid "No hostkey file specified on command line\n" | 8601 | msgid "No hostkey file specified on command line\n" |
8734 | msgstr "" | 8602 | msgstr "" |
8735 | 8603 | ||
8736 | #: src/util/gnunet-ecc.c:425 | 8604 | #: src/util/gnunet-ecc.c:437 |
8737 | msgid "list keys included in a file (for testing)" | 8605 | msgid "list keys included in a file (for testing)" |
8738 | msgstr "" | 8606 | msgstr "" |
8739 | 8607 | ||
8740 | #: src/util/gnunet-ecc.c:430 | 8608 | #: src/util/gnunet-ecc.c:442 |
8741 | msgid "number of keys to list included in a file (for testing)" | 8609 | msgid "number of keys to list included in a file (for testing)" |
8742 | msgstr "" | 8610 | msgstr "" |
8743 | 8611 | ||
8744 | #: src/util/gnunet-ecc.c:435 | 8612 | #: src/util/gnunet-ecc.c:447 |
8745 | msgid "create COUNT public-private key pairs (for testing)" | 8613 | msgid "create COUNT public-private key pairs (for testing)" |
8746 | msgstr "" | 8614 | msgstr "" |
8747 | 8615 | ||
8748 | #: src/util/gnunet-ecc.c:439 | 8616 | #: src/util/gnunet-ecc.c:451 |
8749 | msgid "print the public key in ASCII format" | 8617 | msgid "print the public key in ASCII format" |
8750 | msgstr "" | 8618 | msgstr "" |
8751 | 8619 | ||
8752 | #: src/util/gnunet-ecc.c:443 | 8620 | #: src/util/gnunet-ecc.c:455 |
8621 | msgid "print the private key in ASCII format" | ||
8622 | msgstr "" | ||
8623 | |||
8624 | #: src/util/gnunet-ecc.c:459 | ||
8753 | msgid "print the public key in HEX format" | 8625 | msgid "print the public key in HEX format" |
8754 | msgstr "" | 8626 | msgstr "" |
8755 | 8627 | ||
8756 | #: src/util/gnunet-ecc.c:447 | 8628 | #: src/util/gnunet-ecc.c:463 |
8757 | msgid "print examples of ECC operations (used for compatibility testing)" | 8629 | msgid "print examples of ECC operations (used for compatibility testing)" |
8758 | msgstr "" | 8630 | msgstr "" |
8759 | 8631 | ||
8760 | #: src/util/gnunet-ecc.c:463 | 8632 | #: src/util/gnunet-ecc.c:479 |
8761 | #, fuzzy | 8633 | #, fuzzy |
8762 | msgid "Manipulate GNUnet private ECC key files" | 8634 | msgid "Manipulate GNUnet private ECC key files" |
8763 | msgstr "cập nhật một giá trị trong tập tin cấu hình" | 8635 | msgstr "cập nhật một giá trị trong tập tin cấu hình" |
@@ -8917,22 +8789,22 @@ msgid "" | |||
8917 | "resolution will be unavailable.\n" | 8789 | "resolution will be unavailable.\n" |
8918 | msgstr "" | 8790 | msgstr "" |
8919 | 8791 | ||
8920 | #: src/util/resolver_api.c:826 | 8792 | #: src/util/resolver_api.c:827 |
8921 | #, fuzzy, c-format | 8793 | #, fuzzy, c-format |
8922 | msgid "Timeout trying to resolve hostname `%s'.\n" | 8794 | msgid "Timeout trying to resolve hostname `%s'.\n" |
8923 | msgstr "không quyết định các tên máy" | 8795 | msgstr "không quyết định các tên máy" |
8924 | 8796 | ||
8925 | #: src/util/resolver_api.c:839 | 8797 | #: src/util/resolver_api.c:840 |
8926 | #, fuzzy, c-format | 8798 | #, fuzzy, c-format |
8927 | msgid "Timeout trying to resolve IP address `%s'.\n" | 8799 | msgid "Timeout trying to resolve IP address `%s'.\n" |
8928 | msgstr "GNUnet bây giờ sử dụng địa chỉ IP %s.\n" | 8800 | msgstr "GNUnet bây giờ sử dụng địa chỉ IP %s.\n" |
8929 | 8801 | ||
8930 | #: src/util/resolver_api.c:1023 | 8802 | #: src/util/resolver_api.c:1024 |
8931 | msgid "Resolver not configured correctly.\n" | 8803 | msgid "Resolver not configured correctly.\n" |
8932 | msgstr "" | 8804 | msgstr "" |
8933 | 8805 | ||
8934 | #: src/util/resolver_api.c:1109 src/util/resolver_api.c:1132 | 8806 | #: src/util/resolver_api.c:1110 src/util/resolver_api.c:1133 |
8935 | #: src/util/resolver_api.c:1146 | 8807 | #: src/util/resolver_api.c:1147 |
8936 | #, fuzzy, c-format | 8808 | #, fuzzy, c-format |
8937 | msgid "Could not resolve our FQDN: %s\n" | 8809 | msgid "Could not resolve our FQDN: %s\n" |
8938 | msgstr "Không thể giải quyết « %s » (%s): %s\n" | 8810 | msgstr "Không thể giải quyết « %s » (%s): %s\n" |
@@ -8942,7 +8814,7 @@ msgid "" | |||
8942 | "Could not bind to any of the ports I was supposed to, refusing to run!\n" | 8814 | "Could not bind to any of the ports I was supposed to, refusing to run!\n" |
8943 | msgstr "" | 8815 | msgstr "" |
8944 | 8816 | ||
8945 | #: src/util/service.c:2081 | 8817 | #: src/util/service.c:2091 |
8946 | #, c-format | 8818 | #, c-format |
8947 | msgid "" | 8819 | msgid "" |
8948 | "Processing code for message of type %u did not call " | 8820 | "Processing code for message of type %u did not call " |
@@ -9129,65 +9001,65 @@ msgstr "" | |||
9129 | msgid "# ICMPv6 packets dropped (not allowed)" | 9001 | msgid "# ICMPv6 packets dropped (not allowed)" |
9130 | msgstr "" | 9002 | msgstr "" |
9131 | 9003 | ||
9132 | #: src/vpn/gnunet-service-vpn.c:2232 | 9004 | #: src/vpn/gnunet-service-vpn.c:2235 |
9133 | #, fuzzy | 9005 | #, fuzzy |
9134 | msgid "# Packets received from TUN interface" | 9006 | msgid "# Packets received from TUN interface" |
9135 | msgstr "# các đáp ứng lỗ hổng được gửi cho trình/máy khách" | 9007 | msgstr "# các đáp ứng lỗ hổng được gửi cho trình/máy khách" |
9136 | 9008 | ||
9137 | #: src/vpn/gnunet-service-vpn.c:2265 src/vpn/gnunet-service-vpn.c:2301 | 9009 | #: src/vpn/gnunet-service-vpn.c:2268 src/vpn/gnunet-service-vpn.c:2304 |
9138 | #, c-format | 9010 | #, c-format |
9139 | msgid "Packet received for unmapped destination `%s' (dropping it)\n" | 9011 | msgid "Packet received for unmapped destination `%s' (dropping it)\n" |
9140 | msgstr "" | 9012 | msgstr "" |
9141 | 9013 | ||
9142 | #: src/vpn/gnunet-service-vpn.c:2311 | 9014 | #: src/vpn/gnunet-service-vpn.c:2314 |
9143 | msgid "Received IPv4 packet with options (dropping it)\n" | 9015 | msgid "Received IPv4 packet with options (dropping it)\n" |
9144 | msgstr "" | 9016 | msgstr "" |
9145 | 9017 | ||
9146 | #: src/vpn/gnunet-service-vpn.c:2325 | 9018 | #: src/vpn/gnunet-service-vpn.c:2328 |
9147 | #, c-format | 9019 | #, c-format |
9148 | msgid "Received packet of unknown protocol %d from TUN (dropping it)\n" | 9020 | msgid "Received packet of unknown protocol %d from TUN (dropping it)\n" |
9149 | msgstr "" | 9021 | msgstr "" |
9150 | 9022 | ||
9151 | #: src/vpn/gnunet-service-vpn.c:2364 | 9023 | #: src/vpn/gnunet-service-vpn.c:2367 |
9152 | msgid "Failed to find unallocated IPv4 address in VPN's range\n" | 9024 | msgid "Failed to find unallocated IPv4 address in VPN's range\n" |
9153 | msgstr "" | 9025 | msgstr "" |
9154 | 9026 | ||
9155 | #: src/vpn/gnunet-service-vpn.c:2419 | 9027 | #: src/vpn/gnunet-service-vpn.c:2422 |
9156 | msgid "Failed to find unallocated IPv6 address in VPN's range\n" | 9028 | msgid "Failed to find unallocated IPv6 address in VPN's range\n" |
9157 | msgstr "" | 9029 | msgstr "" |
9158 | 9030 | ||
9159 | #: src/vpn/gnunet-service-vpn.c:2461 src/vpn/gnunet-service-vpn.c:2683 | 9031 | #: src/vpn/gnunet-service-vpn.c:2464 src/vpn/gnunet-service-vpn.c:2686 |
9160 | #, fuzzy | 9032 | #, fuzzy |
9161 | msgid "# Active destinations" | 9033 | msgid "# Active destinations" |
9162 | msgstr "# các kết nối dht" | 9034 | msgstr "# các kết nối dht" |
9163 | 9035 | ||
9164 | #: src/vpn/gnunet-service-vpn.c:2732 | 9036 | #: src/vpn/gnunet-service-vpn.c:2735 |
9165 | msgid "Failed to allocate IP address for new destination\n" | 9037 | msgid "Failed to allocate IP address for new destination\n" |
9166 | msgstr "" | 9038 | msgstr "" |
9167 | 9039 | ||
9168 | #: src/vpn/gnunet-service-vpn.c:2995 | 9040 | #: src/vpn/gnunet-service-vpn.c:2998 |
9169 | #, fuzzy | 9041 | #, fuzzy |
9170 | msgid "Must specify valid IPv6 address" | 9042 | msgid "Must specify valid IPv6 address" |
9171 | msgstr "« %s » không sẵn sàng.\n" | 9043 | msgstr "« %s » không sẵn sàng.\n" |
9172 | 9044 | ||
9173 | #: src/vpn/gnunet-service-vpn.c:3019 | 9045 | #: src/vpn/gnunet-service-vpn.c:3022 |
9174 | msgid "Must specify valid IPv6 mask" | 9046 | msgid "Must specify valid IPv6 mask" |
9175 | msgstr "" | 9047 | msgstr "" |
9176 | 9048 | ||
9177 | #: src/vpn/gnunet-service-vpn.c:3027 | 9049 | #: src/vpn/gnunet-service-vpn.c:3030 |
9178 | msgid "IPv6 support disabled as this system does not support IPv6\n" | 9050 | msgid "IPv6 support disabled as this system does not support IPv6\n" |
9179 | msgstr "" | 9051 | msgstr "" |
9180 | 9052 | ||
9181 | #: src/vpn/gnunet-service-vpn.c:3040 | 9053 | #: src/vpn/gnunet-service-vpn.c:3043 |
9182 | #, fuzzy | 9054 | #, fuzzy |
9183 | msgid "Must specify valid IPv4 address" | 9055 | msgid "Must specify valid IPv4 address" |
9184 | msgstr "« %s » không sẵn sàng.\n" | 9056 | msgstr "« %s » không sẵn sàng.\n" |
9185 | 9057 | ||
9186 | #: src/vpn/gnunet-service-vpn.c:3053 | 9058 | #: src/vpn/gnunet-service-vpn.c:3056 |
9187 | msgid "Must specify valid IPv4 mask" | 9059 | msgid "Must specify valid IPv4 mask" |
9188 | msgstr "" | 9060 | msgstr "" |
9189 | 9061 | ||
9190 | #: src/vpn/gnunet-service-vpn.c:3063 | 9062 | #: src/vpn/gnunet-service-vpn.c:3066 |
9191 | msgid "IPv4 support disabled as this system does not support IPv4\n" | 9063 | msgid "IPv4 support disabled as this system does not support IPv4\n" |
9192 | msgstr "" | 9064 | msgstr "" |
9193 | 9065 | ||
@@ -9281,10 +9153,6 @@ msgid "`%s' failed on file `%s' at %s:%d with error: %s\n" | |||
9281 | msgstr "« %s » thất bại ở tập tin « %s » tại %s:%d với lỗi: %s\n" | 9153 | msgstr "« %s » thất bại ở tập tin « %s » tại %s:%d với lỗi: %s\n" |
9282 | 9154 | ||
9283 | #, fuzzy | 9155 | #, fuzzy |
9284 | #~ msgid "Token `%s' is malformed\n" | ||
9285 | #~ msgstr "Đối số không hợp lệ cho « %s ».\n" | ||
9286 | |||
9287 | #, fuzzy | ||
9288 | #~ msgid "Failed to create indices\n" | 9156 | #~ msgid "Failed to create indices\n" |
9289 | #~ msgstr "Không thể tạo miền tên.\n" | 9157 | #~ msgstr "Không thể tạo miền tên.\n" |
9290 | 9158 | ||
diff --git a/po/zh_CN.po b/po/zh_CN.po index 2539296c2..11632aed0 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po | |||
@@ -7,7 +7,7 @@ msgid "" | |||
7 | msgstr "" | 7 | msgstr "" |
8 | "Project-Id-Version: gnunet-0.8.1\n" | 8 | "Project-Id-Version: gnunet-0.8.1\n" |
9 | "Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n" | 9 | "Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n" |
10 | "POT-Creation-Date: 2017-10-20 15:14+0000\n" | 10 | "POT-Creation-Date: 2018-01-02 02:33+0100\n" |
11 | "PO-Revision-Date: 2011-07-09 12:12+0800\n" | 11 | "PO-Revision-Date: 2011-07-09 12:12+0800\n" |
12 | "Last-Translator: Wylmer Wang <wantinghard@gmail.com>\n" | 12 | "Last-Translator: Wylmer Wang <wantinghard@gmail.com>\n" |
13 | "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n" | 13 | "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n" |
@@ -239,14 +239,14 @@ msgid "Require valid port number for service `%s' in configuration!\n" | |||
239 | msgstr "" | 239 | msgstr "" |
240 | 240 | ||
241 | #: src/arm/gnunet-service-arm.c:430 src/transport/plugin_transport_tcp.c:1176 | 241 | #: src/arm/gnunet-service-arm.c:430 src/transport/plugin_transport_tcp.c:1176 |
242 | #: src/transport/tcp_service_legacy.c:613 src/util/client.c:480 | 242 | #: src/transport/tcp_service_legacy.c:613 src/util/client.c:505 |
243 | #: src/util/service.c:682 | 243 | #: src/util/service.c:682 |
244 | #, c-format | 244 | #, c-format |
245 | msgid "UNIXPATH `%s' too long, maximum length is %llu\n" | 245 | msgid "UNIXPATH `%s' too long, maximum length is %llu\n" |
246 | msgstr "" | 246 | msgstr "" |
247 | 247 | ||
248 | #: src/arm/gnunet-service-arm.c:434 src/transport/plugin_transport_tcp.c:1180 | 248 | #: src/arm/gnunet-service-arm.c:434 src/transport/plugin_transport_tcp.c:1180 |
249 | #: src/transport/tcp_service_legacy.c:617 src/util/client.c:485 | 249 | #: src/transport/tcp_service_legacy.c:617 src/util/client.c:510 |
250 | #: src/util/service.c:687 | 250 | #: src/util/service.c:687 |
251 | #, fuzzy, c-format | 251 | #, fuzzy, c-format |
252 | msgid "Using `%s' instead\n" | 252 | msgid "Using `%s' instead\n" |
@@ -349,15 +349,133 @@ msgstr "" | |||
349 | msgid "Initiating shutdown as requested by client.\n" | 349 | msgid "Initiating shutdown as requested by client.\n" |
350 | msgstr "" | 350 | msgstr "" |
351 | 351 | ||
352 | #: src/ats-tests/ats-testing-log.c:837 | 352 | #: src/ats/gnunet-ats-solver-eval.c:2781 src/ats/gnunet-ats-solver-eval.c:2822 |
353 | msgid "Stop logging\n" | 353 | #, c-format |
354 | msgid "" | ||
355 | "Could not load quota for network `%s': `%s', assigning default bandwidth " | ||
356 | "%llu\n" | ||
354 | msgstr "" | 357 | msgstr "" |
355 | 358 | ||
356 | #: src/ats-tests/ats-testing-log.c:892 | 359 | #: src/ats/gnunet-ats-solver-eval.c:2799 |
357 | #, fuzzy, c-format | 360 | #, c-format |
358 | msgid "Start logging `%s'\n" | 361 | msgid "" |
362 | "No outbound quota configured for network `%s', assigning default bandwidth " | ||
363 | "%llu\n" | ||
364 | msgstr "" | ||
365 | |||
366 | #: src/ats/gnunet-ats-solver-eval.c:2840 | ||
367 | #, c-format | ||
368 | msgid "" | ||
369 | "No outbound quota configure for network `%s', assigning default bandwidth " | ||
370 | "%llu\n" | ||
371 | msgstr "" | ||
372 | |||
373 | #: src/ats/gnunet-ats-solver-eval.c:3294 src/ats-tests/gnunet-solver-eval.c:939 | ||
374 | msgid "solver to use" | ||
375 | msgstr "" | ||
376 | |||
377 | #: src/ats/gnunet-ats-solver-eval.c:3299 src/ats-tests/gnunet-solver-eval.c:945 | ||
378 | #: src/ats-tests/gnunet-solver-eval.c:950 | ||
379 | msgid "experiment to use" | ||
380 | msgstr "" | ||
381 | |||
382 | #: src/ats/gnunet-ats-solver-eval.c:3306 | ||
383 | #, fuzzy | ||
384 | msgid "print logging" | ||
359 | msgstr "未知的命令“%s”。\n" | 385 | msgstr "未知的命令“%s”。\n" |
360 | 386 | ||
387 | #: src/ats/gnunet-ats-solver-eval.c:3311 | ||
388 | msgid "save logging to disk" | ||
389 | msgstr "" | ||
390 | |||
391 | #: src/ats/gnunet-ats-solver-eval.c:3316 | ||
392 | msgid "disable normalization" | ||
393 | msgstr "" | ||
394 | |||
395 | #: src/ats/gnunet-service-ats_plugins.c:304 | ||
396 | #, c-format | ||
397 | msgid "" | ||
398 | "Could not load %s quota for network `%s': `%s', assigning default bandwidth " | ||
399 | "%llu\n" | ||
400 | msgstr "" | ||
401 | |||
402 | #: src/ats/gnunet-service-ats_plugins.c:314 | ||
403 | #, c-format | ||
404 | msgid "%s quota configured for network `%s' is %llu\n" | ||
405 | msgstr "" | ||
406 | |||
407 | #: src/ats/gnunet-service-ats_plugins.c:359 | ||
408 | #, c-format | ||
409 | msgid "" | ||
410 | "No %s-quota configured for network `%s', assigning default bandwidth %llu\n" | ||
411 | msgstr "" | ||
412 | |||
413 | #: src/ats/gnunet-service-ats_plugins.c:451 | ||
414 | #, fuzzy, c-format | ||
415 | msgid "Failed to initialize solver `%s'!\n" | ||
416 | msgstr "无法初始化 SQLite:%s。\n" | ||
417 | |||
418 | #: src/ats/plugin_ats_mlp.c:1274 | ||
419 | msgid "Problem size too large, cannot allocate memory!\n" | ||
420 | msgstr "" | ||
421 | |||
422 | #: src/ats/plugin_ats_mlp.c:1869 | ||
423 | #, c-format | ||
424 | msgid "Adding address for peer `%s' multiple times\n" | ||
425 | msgstr "" | ||
426 | |||
427 | #: src/ats/plugin_ats_mlp.c:1913 | ||
428 | #, c-format | ||
429 | msgid "Updating address property for peer `%s' %p not added before\n" | ||
430 | msgstr "" | ||
431 | |||
432 | #: src/ats/plugin_ats_mlp.c:2475 | ||
433 | msgid "" | ||
434 | "MLP solver is not optimizing for anything, changing to feasibility check\n" | ||
435 | msgstr "" | ||
436 | |||
437 | #: src/ats/plugin_ats_mlp.c:2515 src/ats/plugin_ats_mlp.c:2532 | ||
438 | #: src/ats/plugin_ats_mlp.c:2564 src/ats/plugin_ats_mlp.c:2582 | ||
439 | #: src/ats/plugin_ats_mlp.c:2601 src/ats/plugin_ats_proportional.c:1141 | ||
440 | #: src/ats/plugin_ats_ril.c:2612 src/ats/plugin_ats_ril.c:2629 | ||
441 | #: src/ats/plugin_ats_ril.c:2646 src/ats/plugin_ats_ril.c:2663 | ||
442 | #: src/ats/plugin_ats_ril.c:2680 src/ats/plugin_ats_ril.c:2697 | ||
443 | #: src/ats/plugin_ats_ril.c:2714 src/ats/plugin_ats_ril.c:2731 | ||
444 | #, fuzzy, c-format | ||
445 | msgid "Invalid %s configuration %f \n" | ||
446 | msgstr "解析配置文件“%s”失败\n" | ||
447 | |||
448 | #: src/ats/plugin_ats_mlp.c:2670 | ||
449 | #, c-format | ||
450 | msgid "" | ||
451 | "Adjusting inconsistent outbound quota configuration for network `%s', is " | ||
452 | "%llu must be at least %llu\n" | ||
453 | msgstr "" | ||
454 | |||
455 | #: src/ats/plugin_ats_mlp.c:2679 | ||
456 | #, c-format | ||
457 | msgid "" | ||
458 | "Adjusting inconsistent inbound quota configuration for network `%s', is %llu " | ||
459 | "must be at least %llu\n" | ||
460 | msgstr "" | ||
461 | |||
462 | #: src/ats/plugin_ats_mlp.c:2689 | ||
463 | #, c-format | ||
464 | msgid "" | ||
465 | "Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n" | ||
466 | msgstr "" | ||
467 | |||
468 | #: src/ats/plugin_ats_mlp.c:2698 | ||
469 | #, c-format | ||
470 | msgid "" | ||
471 | "Adjusting inbound quota configuration for network `%s' from %llu to %.0f\n" | ||
472 | msgstr "" | ||
473 | |||
474 | #: src/ats/plugin_ats_proportional.c:1164 | ||
475 | #, fuzzy, c-format | ||
476 | msgid "Invalid %s configuration %f\n" | ||
477 | msgstr "解析配置文件“%s”失败\n" | ||
478 | |||
361 | #: src/ats-tests/ats-testing.c:422 | 479 | #: src/ats-tests/ats-testing.c:422 |
362 | #, c-format | 480 | #, c-format |
363 | msgid "Connected master [%u] with slave [%u]\n" | 481 | msgid "Connected master [%u] with slave [%u]\n" |
@@ -368,6 +486,15 @@ msgstr "" | |||
368 | msgid "Failed to connect master peer [%u] with slave [%u]\n" | 486 | msgid "Failed to connect master peer [%u] with slave [%u]\n" |
369 | msgstr "初始化“%s”服务失败。\n" | 487 | msgstr "初始化“%s”服务失败。\n" |
370 | 488 | ||
489 | #: src/ats-tests/ats-testing-log.c:837 | ||
490 | msgid "Stop logging\n" | ||
491 | msgstr "" | ||
492 | |||
493 | #: src/ats-tests/ats-testing-log.c:892 | ||
494 | #, fuzzy, c-format | ||
495 | msgid "Start logging `%s'\n" | ||
496 | msgstr "未知的命令“%s”。\n" | ||
497 | |||
371 | #: src/ats-tests/gnunet-ats-sim.c:90 | 498 | #: src/ats-tests/gnunet-ats-sim.c:90 |
372 | #, c-format | 499 | #, c-format |
373 | msgid "" | 500 | msgid "" |
@@ -375,15 +502,6 @@ msgid "" | |||
375 | "= %u KiB/s\n" | 502 | "= %u KiB/s\n" |
376 | msgstr "" | 503 | msgstr "" |
377 | 504 | ||
378 | #: src/ats-tests/gnunet-solver-eval.c:939 src/ats/gnunet-ats-solver-eval.c:3294 | ||
379 | msgid "solver to use" | ||
380 | msgstr "" | ||
381 | |||
382 | #: src/ats-tests/gnunet-solver-eval.c:945 | ||
383 | #: src/ats-tests/gnunet-solver-eval.c:950 src/ats/gnunet-ats-solver-eval.c:3299 | ||
384 | msgid "experiment to use" | ||
385 | msgstr "" | ||
386 | |||
387 | #: src/ats-tool/gnunet-ats.c:307 | 505 | #: src/ats-tool/gnunet-ats.c:307 |
388 | #, c-format | 506 | #, c-format |
389 | msgid "%u address resolutions had a timeout\n" | 507 | msgid "%u address resolutions had a timeout\n" |
@@ -505,124 +623,6 @@ msgstr "" | |||
505 | msgid "Print information about ATS state" | 623 | msgid "Print information about ATS state" |
506 | msgstr "无法获取有关用户“%s”的信息:%s\n" | 624 | msgstr "无法获取有关用户“%s”的信息:%s\n" |
507 | 625 | ||
508 | #: src/ats/gnunet-ats-solver-eval.c:2781 src/ats/gnunet-ats-solver-eval.c:2822 | ||
509 | #, c-format | ||
510 | msgid "" | ||
511 | "Could not load quota for network `%s': `%s', assigning default bandwidth " | ||
512 | "%llu\n" | ||
513 | msgstr "" | ||
514 | |||
515 | #: src/ats/gnunet-ats-solver-eval.c:2799 | ||
516 | #, c-format | ||
517 | msgid "" | ||
518 | "No outbound quota configured for network `%s', assigning default bandwidth " | ||
519 | "%llu\n" | ||
520 | msgstr "" | ||
521 | |||
522 | #: src/ats/gnunet-ats-solver-eval.c:2840 | ||
523 | #, c-format | ||
524 | msgid "" | ||
525 | "No outbound quota configure for network `%s', assigning default bandwidth " | ||
526 | "%llu\n" | ||
527 | msgstr "" | ||
528 | |||
529 | #: src/ats/gnunet-ats-solver-eval.c:3306 | ||
530 | #, fuzzy | ||
531 | msgid "print logging" | ||
532 | msgstr "未知的命令“%s”。\n" | ||
533 | |||
534 | #: src/ats/gnunet-ats-solver-eval.c:3311 | ||
535 | msgid "save logging to disk" | ||
536 | msgstr "" | ||
537 | |||
538 | #: src/ats/gnunet-ats-solver-eval.c:3316 | ||
539 | msgid "disable normalization" | ||
540 | msgstr "" | ||
541 | |||
542 | #: src/ats/gnunet-service-ats_plugins.c:304 | ||
543 | #, c-format | ||
544 | msgid "" | ||
545 | "Could not load %s quota for network `%s': `%s', assigning default bandwidth " | ||
546 | "%llu\n" | ||
547 | msgstr "" | ||
548 | |||
549 | #: src/ats/gnunet-service-ats_plugins.c:314 | ||
550 | #, c-format | ||
551 | msgid "%s quota configured for network `%s' is %llu\n" | ||
552 | msgstr "" | ||
553 | |||
554 | #: src/ats/gnunet-service-ats_plugins.c:359 | ||
555 | #, c-format | ||
556 | msgid "" | ||
557 | "No %s-quota configured for network `%s', assigning default bandwidth %llu\n" | ||
558 | msgstr "" | ||
559 | |||
560 | #: src/ats/gnunet-service-ats_plugins.c:451 | ||
561 | #, fuzzy, c-format | ||
562 | msgid "Failed to initialize solver `%s'!\n" | ||
563 | msgstr "无法初始化 SQLite:%s。\n" | ||
564 | |||
565 | #: src/ats/plugin_ats_mlp.c:1274 | ||
566 | msgid "Problem size too large, cannot allocate memory!\n" | ||
567 | msgstr "" | ||
568 | |||
569 | #: src/ats/plugin_ats_mlp.c:1869 | ||
570 | #, c-format | ||
571 | msgid "Adding address for peer `%s' multiple times\n" | ||
572 | msgstr "" | ||
573 | |||
574 | #: src/ats/plugin_ats_mlp.c:1913 | ||
575 | #, c-format | ||
576 | msgid "Updating address property for peer `%s' %p not added before\n" | ||
577 | msgstr "" | ||
578 | |||
579 | #: src/ats/plugin_ats_mlp.c:2475 | ||
580 | msgid "" | ||
581 | "MLP solver is not optimizing for anything, changing to feasibility check\n" | ||
582 | msgstr "" | ||
583 | |||
584 | #: src/ats/plugin_ats_mlp.c:2515 src/ats/plugin_ats_mlp.c:2532 | ||
585 | #: src/ats/plugin_ats_mlp.c:2564 src/ats/plugin_ats_mlp.c:2582 | ||
586 | #: src/ats/plugin_ats_mlp.c:2601 src/ats/plugin_ats_proportional.c:1141 | ||
587 | #: src/ats/plugin_ats_ril.c:2612 src/ats/plugin_ats_ril.c:2629 | ||
588 | #: src/ats/plugin_ats_ril.c:2646 src/ats/plugin_ats_ril.c:2663 | ||
589 | #: src/ats/plugin_ats_ril.c:2680 src/ats/plugin_ats_ril.c:2697 | ||
590 | #: src/ats/plugin_ats_ril.c:2714 src/ats/plugin_ats_ril.c:2731 | ||
591 | #, fuzzy, c-format | ||
592 | msgid "Invalid %s configuration %f \n" | ||
593 | msgstr "解析配置文件“%s”失败\n" | ||
594 | |||
595 | #: src/ats/plugin_ats_mlp.c:2670 | ||
596 | #, c-format | ||
597 | msgid "" | ||
598 | "Adjusting inconsistent outbound quota configuration for network `%s', is " | ||
599 | "%llu must be at least %llu\n" | ||
600 | msgstr "" | ||
601 | |||
602 | #: src/ats/plugin_ats_mlp.c:2679 | ||
603 | #, c-format | ||
604 | msgid "" | ||
605 | "Adjusting inconsistent inbound quota configuration for network `%s', is %llu " | ||
606 | "must be at least %llu\n" | ||
607 | msgstr "" | ||
608 | |||
609 | #: src/ats/plugin_ats_mlp.c:2689 | ||
610 | #, c-format | ||
611 | msgid "" | ||
612 | "Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n" | ||
613 | msgstr "" | ||
614 | |||
615 | #: src/ats/plugin_ats_mlp.c:2698 | ||
616 | #, c-format | ||
617 | msgid "" | ||
618 | "Adjusting inbound quota configuration for network `%s' from %llu to %.0f\n" | ||
619 | msgstr "" | ||
620 | |||
621 | #: src/ats/plugin_ats_proportional.c:1164 | ||
622 | #, fuzzy, c-format | ||
623 | msgid "Invalid %s configuration %f\n" | ||
624 | msgstr "解析配置文件“%s”失败\n" | ||
625 | |||
626 | #: src/auction/gnunet-auction-create.c:163 | 626 | #: src/auction/gnunet-auction-create.c:163 |
627 | msgid "description of the item to be sold" | 627 | msgid "description of the item to be sold" |
628 | msgstr "" | 628 | msgstr "" |
@@ -669,57 +669,57 @@ msgstr "" | |||
669 | msgid "Invalid peer ID `%s'\n" | 669 | msgid "Invalid peer ID `%s'\n" |
670 | msgstr "无效条目。\n" | 670 | msgstr "无效条目。\n" |
671 | 671 | ||
672 | #: src/cadet/gnunet-cadet.c:702 | 672 | #: src/cadet/gnunet-cadet.c:703 |
673 | #, fuzzy, c-format | 673 | #, fuzzy, c-format |
674 | msgid "Invalid tunnel owner `%s'\n" | 674 | msgid "Invalid tunnel owner `%s'\n" |
675 | msgstr "IP 格式无效:“%s”\n" | 675 | msgstr "IP 格式无效:“%s”\n" |
676 | 676 | ||
677 | #: src/cadet/gnunet-cadet.c:775 | 677 | #: src/cadet/gnunet-cadet.c:776 |
678 | msgid "Extra arguments are not applicable in combination with this option.\n" | 678 | msgid "Extra arguments are not applicable in combination with this option.\n" |
679 | msgstr "" | 679 | msgstr "" |
680 | 680 | ||
681 | #: src/cadet/gnunet-cadet.c:866 | 681 | #: src/cadet/gnunet-cadet.c:867 |
682 | #, fuzzy, c-format | 682 | #, fuzzy, c-format |
683 | msgid "Invalid target `%s'\n" | 683 | msgid "Invalid target `%s'\n" |
684 | msgstr "“%s”的参数无效。\n" | 684 | msgstr "“%s”的参数无效。\n" |
685 | 685 | ||
686 | #: src/cadet/gnunet-cadet.c:903 | 686 | #: src/cadet/gnunet-cadet.c:904 |
687 | msgid "No action requested\n" | 687 | msgid "No action requested\n" |
688 | msgstr "" | 688 | msgstr "" |
689 | 689 | ||
690 | #: src/cadet/gnunet-cadet.c:928 | 690 | #: src/cadet/gnunet-cadet.c:929 |
691 | #, fuzzy | 691 | #, fuzzy |
692 | msgid "Provide information about a particular connection" | 692 | msgid "Provide information about a particular connection" |
693 | msgstr "无法获取有关用户“%s”的信息:%s\n" | 693 | msgstr "无法获取有关用户“%s”的信息:%s\n" |
694 | 694 | ||
695 | #: src/cadet/gnunet-cadet.c:933 | 695 | #: src/cadet/gnunet-cadet.c:934 |
696 | msgid "Activate echo mode" | 696 | msgid "Activate echo mode" |
697 | msgstr "" | 697 | msgstr "" |
698 | 698 | ||
699 | #: src/cadet/gnunet-cadet.c:938 | 699 | #: src/cadet/gnunet-cadet.c:939 |
700 | msgid "Dump debug information to STDERR" | 700 | msgid "Dump debug information to STDERR" |
701 | msgstr "" | 701 | msgstr "" |
702 | 702 | ||
703 | #: src/cadet/gnunet-cadet.c:944 | 703 | #: src/cadet/gnunet-cadet.c:945 |
704 | msgid "Listen for connections using a shared secret among sender and recipient" | 704 | msgid "Listen for connections using a shared secret among sender and recipient" |
705 | msgstr "" | 705 | msgstr "" |
706 | 706 | ||
707 | #: src/cadet/gnunet-cadet.c:951 | 707 | #: src/cadet/gnunet-cadet.c:952 |
708 | #, fuzzy | 708 | #, fuzzy |
709 | msgid "Provide information about a patricular peer" | 709 | msgid "Provide information about a patricular peer" |
710 | msgstr "无法获取有关用户“%s”的信息:%s\n" | 710 | msgstr "无法获取有关用户“%s”的信息:%s\n" |
711 | 711 | ||
712 | #: src/cadet/gnunet-cadet.c:957 | 712 | #: src/cadet/gnunet-cadet.c:958 |
713 | #, fuzzy | 713 | #, fuzzy |
714 | msgid "Provide information about all peers" | 714 | msgid "Provide information about all peers" |
715 | msgstr "无法获取有关用户“%s”的信息:%s\n" | 715 | msgstr "无法获取有关用户“%s”的信息:%s\n" |
716 | 716 | ||
717 | #: src/cadet/gnunet-cadet.c:963 | 717 | #: src/cadet/gnunet-cadet.c:964 |
718 | #, fuzzy | 718 | #, fuzzy |
719 | msgid "Provide information about a particular tunnel" | 719 | msgid "Provide information about a particular tunnel" |
720 | msgstr "无法获取有关用户“%s”的信息:%s\n" | 720 | msgstr "无法获取有关用户“%s”的信息:%s\n" |
721 | 721 | ||
722 | #: src/cadet/gnunet-cadet.c:969 | 722 | #: src/cadet/gnunet-cadet.c:970 |
723 | #, fuzzy | 723 | #, fuzzy |
724 | msgid "Provide information about all tunnels" | 724 | msgid "Provide information about all tunnels" |
725 | msgstr "无法获取有关用户“%s”的信息:%s\n" | 725 | msgstr "无法获取有关用户“%s”的信息:%s\n" |
@@ -768,28 +768,6 @@ msgstr "" | |||
768 | msgid "Connection to conversation service lost, trying to reconnect\n" | 768 | msgid "Connection to conversation service lost, trying to reconnect\n" |
769 | msgstr "" | 769 | msgstr "" |
770 | 770 | ||
771 | #: src/conversation/gnunet-conversation-test.c:119 | ||
772 | #, c-format | ||
773 | msgid "" | ||
774 | "\n" | ||
775 | "End of transmission. Have a GNU day.\n" | ||
776 | msgstr "" | ||
777 | |||
778 | #: src/conversation/gnunet-conversation-test.c:145 | ||
779 | #, c-format | ||
780 | msgid "" | ||
781 | "\n" | ||
782 | "We are now playing your recording back. If you can hear it, your audio " | ||
783 | "settings are working..." | ||
784 | msgstr "" | ||
785 | |||
786 | #: src/conversation/gnunet-conversation-test.c:210 | ||
787 | #, c-format | ||
788 | msgid "" | ||
789 | "We will now be recording you for %s. After that time, the recording will be " | ||
790 | "played back to you..." | ||
791 | msgstr "" | ||
792 | |||
793 | #: src/conversation/gnunet-conversation.c:269 | 771 | #: src/conversation/gnunet-conversation.c:269 |
794 | #, c-format | 772 | #, c-format |
795 | msgid "Incoming call from `%s'. Please /accept %u or /cancel %u the call.\n" | 773 | msgid "Incoming call from `%s'. Please /accept %u or /cancel %u the call.\n" |
@@ -1046,8 +1024,30 @@ msgstr "" | |||
1046 | msgid "Enables having a conversation with other GNUnet users." | 1024 | msgid "Enables having a conversation with other GNUnet users." |
1047 | msgstr "" | 1025 | msgstr "" |
1048 | 1026 | ||
1049 | #: src/conversation/gnunet-helper-audio-playback-gst.c:356 | 1027 | #: src/conversation/gnunet-conversation-test.c:119 |
1028 | #, c-format | ||
1029 | msgid "" | ||
1030 | "\n" | ||
1031 | "End of transmission. Have a GNU day.\n" | ||
1032 | msgstr "" | ||
1033 | |||
1034 | #: src/conversation/gnunet-conversation-test.c:145 | ||
1035 | #, c-format | ||
1036 | msgid "" | ||
1037 | "\n" | ||
1038 | "We are now playing your recording back. If you can hear it, your audio " | ||
1039 | "settings are working..." | ||
1040 | msgstr "" | ||
1041 | |||
1042 | #: src/conversation/gnunet-conversation-test.c:210 | ||
1043 | #, c-format | ||
1044 | msgid "" | ||
1045 | "We will now be recording you for %s. After that time, the recording will be " | ||
1046 | "played back to you..." | ||
1047 | msgstr "" | ||
1048 | |||
1050 | #: src/conversation/gnunet_gst.c:622 | 1049 | #: src/conversation/gnunet_gst.c:622 |
1050 | #: src/conversation/gnunet-helper-audio-playback-gst.c:361 | ||
1051 | #, c-format | 1051 | #, c-format |
1052 | msgid "Read error from STDIN: %d %s\n" | 1052 | msgid "Read error from STDIN: %d %s\n" |
1053 | msgstr "" | 1053 | msgstr "" |
@@ -1057,59 +1057,59 @@ msgstr "" | |||
1057 | msgid "pa_stream_write() failed: %s\n" | 1057 | msgid "pa_stream_write() failed: %s\n" |
1058 | msgstr "“%s”说:%s\n" | 1058 | msgstr "“%s”说:%s\n" |
1059 | 1059 | ||
1060 | #: src/conversation/gnunet-helper-audio-playback.c:607 | 1060 | #: src/conversation/gnunet-helper-audio-playback.c:612 |
1061 | msgid "gnunet-helper-audio-playback - Got signal, exiting\n" | 1061 | msgid "gnunet-helper-audio-playback - Got signal, exiting\n" |
1062 | msgstr "" | 1062 | msgstr "" |
1063 | 1063 | ||
1064 | #: src/conversation/gnunet-helper-audio-playback.c:632 | 1064 | #: src/conversation/gnunet-helper-audio-playback.c:637 |
1065 | #: src/conversation/gnunet-helper-audio-record.c:545 | 1065 | #: src/conversation/gnunet-helper-audio-record.c:545 |
1066 | msgid "Connection established.\n" | 1066 | msgid "Connection established.\n" |
1067 | msgstr "" | 1067 | msgstr "" |
1068 | 1068 | ||
1069 | #: src/conversation/gnunet-helper-audio-playback.c:637 | 1069 | #: src/conversation/gnunet-helper-audio-playback.c:642 |
1070 | #: src/conversation/gnunet-helper-audio-record.c:550 | 1070 | #: src/conversation/gnunet-helper-audio-record.c:550 |
1071 | #, fuzzy, c-format | 1071 | #, fuzzy, c-format |
1072 | msgid "pa_stream_new() failed: %s\n" | 1072 | msgid "pa_stream_new() failed: %s\n" |
1073 | msgstr "“%s”说:%s\n" | 1073 | msgstr "“%s”说:%s\n" |
1074 | 1074 | ||
1075 | #: src/conversation/gnunet-helper-audio-playback.c:651 | 1075 | #: src/conversation/gnunet-helper-audio-playback.c:656 |
1076 | #, c-format | 1076 | #, c-format |
1077 | msgid "pa_stream_connect_playback() failed: %s\n" | 1077 | msgid "pa_stream_connect_playback() failed: %s\n" |
1078 | msgstr "" | 1078 | msgstr "" |
1079 | 1079 | ||
1080 | #: src/conversation/gnunet-helper-audio-playback.c:664 | 1080 | #: src/conversation/gnunet-helper-audio-playback.c:669 |
1081 | #: src/conversation/gnunet-helper-audio-record.c:576 | 1081 | #: src/conversation/gnunet-helper-audio-record.c:576 |
1082 | #, fuzzy, c-format | 1082 | #, fuzzy, c-format |
1083 | msgid "Connection failure: %s\n" | 1083 | msgid "Connection failure: %s\n" |
1084 | msgstr "“%s”已连接到“%s”。\n" | 1084 | msgstr "“%s”已连接到“%s”。\n" |
1085 | 1085 | ||
1086 | #: src/conversation/gnunet-helper-audio-playback.c:685 | 1086 | #: src/conversation/gnunet-helper-audio-playback.c:690 |
1087 | #: src/conversation/gnunet-helper-audio-record.c:599 | 1087 | #: src/conversation/gnunet-helper-audio-record.c:599 |
1088 | msgid "Wrong Spec\n" | 1088 | msgid "Wrong Spec\n" |
1089 | msgstr "" | 1089 | msgstr "" |
1090 | 1090 | ||
1091 | #: src/conversation/gnunet-helper-audio-playback.c:691 | 1091 | #: src/conversation/gnunet-helper-audio-playback.c:696 |
1092 | #: src/conversation/gnunet-helper-audio-record.c:605 | 1092 | #: src/conversation/gnunet-helper-audio-record.c:605 |
1093 | msgid "pa_mainloop_new() failed.\n" | 1093 | msgid "pa_mainloop_new() failed.\n" |
1094 | msgstr "" | 1094 | msgstr "" |
1095 | 1095 | ||
1096 | #: src/conversation/gnunet-helper-audio-playback.c:705 | 1096 | #: src/conversation/gnunet-helper-audio-playback.c:710 |
1097 | #: src/conversation/gnunet-helper-audio-record.c:620 | 1097 | #: src/conversation/gnunet-helper-audio-record.c:620 |
1098 | msgid "pa_context_new() failed.\n" | 1098 | msgid "pa_context_new() failed.\n" |
1099 | msgstr "" | 1099 | msgstr "" |
1100 | 1100 | ||
1101 | #: src/conversation/gnunet-helper-audio-playback.c:712 | 1101 | #: src/conversation/gnunet-helper-audio-playback.c:717 |
1102 | #: src/conversation/gnunet-helper-audio-record.c:626 | 1102 | #: src/conversation/gnunet-helper-audio-record.c:626 |
1103 | #, fuzzy, c-format | 1103 | #, fuzzy, c-format |
1104 | msgid "pa_context_connect() failed: %s\n" | 1104 | msgid "pa_context_connect() failed: %s\n" |
1105 | msgstr "“%s”说:%s\n" | 1105 | msgstr "“%s”说:%s\n" |
1106 | 1106 | ||
1107 | #: src/conversation/gnunet-helper-audio-playback.c:718 | 1107 | #: src/conversation/gnunet-helper-audio-playback.c:723 |
1108 | #: src/conversation/gnunet-helper-audio-record.c:632 | 1108 | #: src/conversation/gnunet-helper-audio-record.c:632 |
1109 | msgid "pa_mainloop_run() failed.\n" | 1109 | msgid "pa_mainloop_run() failed.\n" |
1110 | msgstr "" | 1110 | msgstr "" |
1111 | 1111 | ||
1112 | #: src/conversation/gnunet-helper-audio-playback.c:790 | 1112 | #: src/conversation/gnunet-helper-audio-playback.c:795 |
1113 | #, c-format | 1113 | #, c-format |
1114 | msgid "Read error from STDIN: %s\n" | 1114 | msgid "Read error from STDIN: %s\n" |
1115 | msgstr "" | 1115 | msgstr "" |
@@ -1178,7 +1178,7 @@ msgstr "初始化“%s”服务失败。\n" | |||
1178 | msgid "Could not open line, port %s already in use!\n" | 1178 | msgid "Could not open line, port %s already in use!\n" |
1179 | msgstr "无法连接到 %s:%u:%s\n" | 1179 | msgstr "无法连接到 %s:%u:%s\n" |
1180 | 1180 | ||
1181 | #: src/conversation/microphone.c:119 | 1181 | #: src/conversation/microphone.c:121 |
1182 | #, fuzzy | 1182 | #, fuzzy |
1183 | msgid "Could not start record audio helper\n" | 1183 | msgid "Could not start record audio helper\n" |
1184 | msgstr "找不到主机“%s”的 IP:%s\n" | 1184 | msgstr "找不到主机“%s”的 IP:%s\n" |
@@ -1267,26 +1267,26 @@ msgstr "" | |||
1267 | msgid "# dequeuing CAR (duplicate request)" | 1267 | msgid "# dequeuing CAR (duplicate request)" |
1268 | msgstr "" | 1268 | msgstr "" |
1269 | 1269 | ||
1270 | #: src/core/gnunet-service-core.c:440 | 1270 | #: src/core/gnunet-service-core.c:443 |
1271 | #, c-format | 1271 | #, c-format |
1272 | msgid "# bytes of messages of type %u received" | 1272 | msgid "# bytes of messages of type %u received" |
1273 | msgstr "" | 1273 | msgstr "" |
1274 | 1274 | ||
1275 | #: src/core/gnunet-service-core.c:538 | 1275 | #: src/core/gnunet-service-core.c:541 |
1276 | msgid "# messages discarded (session disconnected)" | 1276 | msgid "# messages discarded (session disconnected)" |
1277 | msgstr "" | 1277 | msgstr "" |
1278 | 1278 | ||
1279 | #: src/core/gnunet-service-core.c:876 | 1279 | #: src/core/gnunet-service-core.c:879 |
1280 | #, c-format | 1280 | #, c-format |
1281 | msgid "# messages of type %u discarded (client busy)" | 1281 | msgid "# messages of type %u discarded (client busy)" |
1282 | msgstr "" | 1282 | msgstr "" |
1283 | 1283 | ||
1284 | #: src/core/gnunet-service-core.c:985 | 1284 | #: src/core/gnunet-service-core.c:988 |
1285 | #, fuzzy | 1285 | #, fuzzy |
1286 | msgid "Core service is lacking HOSTKEY configuration setting. Exiting.\n" | 1286 | msgid "Core service is lacking HOSTKEY configuration setting. Exiting.\n" |
1287 | msgstr "立即保存配置?" | 1287 | msgstr "立即保存配置?" |
1288 | 1288 | ||
1289 | #: src/core/gnunet-service-core.c:1006 | 1289 | #: src/core/gnunet-service-core.c:1009 |
1290 | #, fuzzy, c-format | 1290 | #, fuzzy, c-format |
1291 | msgid "Core service of `%s' ready.\n" | 1291 | msgid "Core service of `%s' ready.\n" |
1292 | msgstr "服务已删除。\n" | 1292 | msgstr "服务已删除。\n" |
@@ -1299,125 +1299,125 @@ msgstr "" | |||
1299 | msgid "# bytes decrypted" | 1299 | msgid "# bytes decrypted" |
1300 | msgstr "" | 1300 | msgstr "" |
1301 | 1301 | ||
1302 | #: src/core/gnunet-service-core_kx.c:725 | 1302 | #: src/core/gnunet-service-core_kx.c:728 |
1303 | msgid "# PAYLOAD dropped (out of order)" | 1303 | msgid "# PAYLOAD dropped (out of order)" |
1304 | msgstr "" | 1304 | msgstr "" |
1305 | 1305 | ||
1306 | #: src/core/gnunet-service-core_kx.c:775 | 1306 | #: src/core/gnunet-service-core_kx.c:778 |
1307 | msgid "# key exchanges initiated" | 1307 | msgid "# key exchanges initiated" |
1308 | msgstr "" | 1308 | msgstr "" |
1309 | 1309 | ||
1310 | #: src/core/gnunet-service-core_kx.c:837 | 1310 | #: src/core/gnunet-service-core_kx.c:840 |
1311 | msgid "# key exchanges stopped" | 1311 | msgid "# key exchanges stopped" |
1312 | msgstr "" | 1312 | msgstr "" |
1313 | 1313 | ||
1314 | #: src/core/gnunet-service-core_kx.c:871 | 1314 | #: src/core/gnunet-service-core_kx.c:874 |
1315 | #, fuzzy | 1315 | #, fuzzy |
1316 | msgid "# PING messages transmitted" | 1316 | msgid "# PING messages transmitted" |
1317 | msgstr "消息尺寸" | 1317 | msgstr "消息尺寸" |
1318 | 1318 | ||
1319 | #: src/core/gnunet-service-core_kx.c:938 | 1319 | #: src/core/gnunet-service-core_kx.c:941 |
1320 | msgid "# old ephemeral keys ignored" | 1320 | msgid "# old ephemeral keys ignored" |
1321 | msgstr "" | 1321 | msgstr "" |
1322 | 1322 | ||
1323 | #: src/core/gnunet-service-core_kx.c:945 | 1323 | #: src/core/gnunet-service-core_kx.c:948 |
1324 | msgid "# ephemeral keys received" | 1324 | msgid "# ephemeral keys received" |
1325 | msgstr "" | 1325 | msgstr "" |
1326 | 1326 | ||
1327 | #: src/core/gnunet-service-core_kx.c:984 | 1327 | #: src/core/gnunet-service-core_kx.c:987 |
1328 | #, c-format | 1328 | #, c-format |
1329 | msgid "" | 1329 | msgid "" |
1330 | "Ephemeral key message from peer `%s' rejected as its validity range does not " | 1330 | "Ephemeral key message from peer `%s' rejected as its validity range does not " |
1331 | "match our system time (%llu not in [%llu,%llu]).\n" | 1331 | "match our system time (%llu not in [%llu,%llu]).\n" |
1332 | msgstr "" | 1332 | msgstr "" |
1333 | 1333 | ||
1334 | #: src/core/gnunet-service-core_kx.c:995 | 1334 | #: src/core/gnunet-service-core_kx.c:998 |
1335 | msgid "# EPHEMERAL_KEY messages received" | 1335 | msgid "# EPHEMERAL_KEY messages received" |
1336 | msgstr "" | 1336 | msgstr "" |
1337 | 1337 | ||
1338 | #: src/core/gnunet-service-core_kx.c:1091 | 1338 | #: src/core/gnunet-service-core_kx.c:1094 |
1339 | #: src/transport/gnunet-service-transport_validation.c:1119 | 1339 | #: src/transport/gnunet-service-transport_validation.c:1128 |
1340 | msgid "# PING messages received" | 1340 | msgid "# PING messages received" |
1341 | msgstr "" | 1341 | msgstr "" |
1342 | 1342 | ||
1343 | #: src/core/gnunet-service-core_kx.c:1100 | 1343 | #: src/core/gnunet-service-core_kx.c:1103 |
1344 | msgid "# PING messages dropped (out of order)" | 1344 | msgid "# PING messages dropped (out of order)" |
1345 | msgstr "" | 1345 | msgstr "" |
1346 | 1346 | ||
1347 | #: src/core/gnunet-service-core_kx.c:1158 | 1347 | #: src/core/gnunet-service-core_kx.c:1161 |
1348 | msgid "# PONG messages created" | 1348 | msgid "# PONG messages created" |
1349 | msgstr "" | 1349 | msgstr "" |
1350 | 1350 | ||
1351 | #: src/core/gnunet-service-core_kx.c:1184 | 1351 | #: src/core/gnunet-service-core_kx.c:1187 |
1352 | msgid "# sessions terminated by timeout" | 1352 | msgid "# sessions terminated by timeout" |
1353 | msgstr "" | 1353 | msgstr "" |
1354 | 1354 | ||
1355 | #: src/core/gnunet-service-core_kx.c:1197 | 1355 | #: src/core/gnunet-service-core_kx.c:1200 |
1356 | msgid "# keepalive messages sent" | 1356 | msgid "# keepalive messages sent" |
1357 | msgstr "" | 1357 | msgstr "" |
1358 | 1358 | ||
1359 | #: src/core/gnunet-service-core_kx.c:1261 | 1359 | #: src/core/gnunet-service-core_kx.c:1264 |
1360 | #: src/transport/gnunet-service-transport_validation.c:1442 | 1360 | #: src/transport/gnunet-service-transport_validation.c:1461 |
1361 | msgid "# PONG messages received" | 1361 | msgid "# PONG messages received" |
1362 | msgstr "" | 1362 | msgstr "" |
1363 | 1363 | ||
1364 | #: src/core/gnunet-service-core_kx.c:1268 | 1364 | #: src/core/gnunet-service-core_kx.c:1271 |
1365 | msgid "# PONG messages dropped (connection down)" | 1365 | msgid "# PONG messages dropped (connection down)" |
1366 | msgstr "" | 1366 | msgstr "" |
1367 | 1367 | ||
1368 | #: src/core/gnunet-service-core_kx.c:1273 | 1368 | #: src/core/gnunet-service-core_kx.c:1276 |
1369 | msgid "# PONG messages dropped (out of order)" | 1369 | msgid "# PONG messages dropped (out of order)" |
1370 | msgstr "" | 1370 | msgstr "" |
1371 | 1371 | ||
1372 | #: src/core/gnunet-service-core_kx.c:1308 | 1372 | #: src/core/gnunet-service-core_kx.c:1311 |
1373 | msgid "# PONG messages decrypted" | 1373 | msgid "# PONG messages decrypted" |
1374 | msgstr "" | 1374 | msgstr "" |
1375 | 1375 | ||
1376 | #: src/core/gnunet-service-core_kx.c:1346 | 1376 | #: src/core/gnunet-service-core_kx.c:1349 |
1377 | msgid "# session keys confirmed via PONG" | 1377 | msgid "# session keys confirmed via PONG" |
1378 | msgstr "" | 1378 | msgstr "" |
1379 | 1379 | ||
1380 | #: src/core/gnunet-service-core_kx.c:1357 | 1380 | #: src/core/gnunet-service-core_kx.c:1360 |
1381 | msgid "# timeouts prevented via PONG" | 1381 | msgid "# timeouts prevented via PONG" |
1382 | msgstr "" | 1382 | msgstr "" |
1383 | 1383 | ||
1384 | #: src/core/gnunet-service-core_kx.c:1364 | 1384 | #: src/core/gnunet-service-core_kx.c:1367 |
1385 | msgid "# rekey operations confirmed via PONG" | 1385 | msgid "# rekey operations confirmed via PONG" |
1386 | msgstr "" | 1386 | msgstr "" |
1387 | 1387 | ||
1388 | #: src/core/gnunet-service-core_kx.c:1518 | 1388 | #: src/core/gnunet-service-core_kx.c:1521 |
1389 | msgid "# DATA message dropped (out of order)" | 1389 | msgid "# DATA message dropped (out of order)" |
1390 | msgstr "" | 1390 | msgstr "" |
1391 | 1391 | ||
1392 | #: src/core/gnunet-service-core_kx.c:1526 | 1392 | #: src/core/gnunet-service-core_kx.c:1529 |
1393 | #, c-format | 1393 | #, c-format |
1394 | msgid "" | 1394 | msgid "" |
1395 | "Session to peer `%s' went down due to key expiration (should not happen)\n" | 1395 | "Session to peer `%s' went down due to key expiration (should not happen)\n" |
1396 | msgstr "" | 1396 | msgstr "" |
1397 | 1397 | ||
1398 | #: src/core/gnunet-service-core_kx.c:1529 | 1398 | #: src/core/gnunet-service-core_kx.c:1532 |
1399 | msgid "# sessions terminated by key expiration" | 1399 | msgid "# sessions terminated by key expiration" |
1400 | msgstr "" | 1400 | msgstr "" |
1401 | 1401 | ||
1402 | #: src/core/gnunet-service-core_kx.c:1590 | 1402 | #: src/core/gnunet-service-core_kx.c:1593 |
1403 | #: src/core/gnunet-service-core_kx.c:1616 | 1403 | #: src/core/gnunet-service-core_kx.c:1619 |
1404 | msgid "# bytes dropped (duplicates)" | 1404 | msgid "# bytes dropped (duplicates)" |
1405 | msgstr "" | 1405 | msgstr "" |
1406 | 1406 | ||
1407 | #: src/core/gnunet-service-core_kx.c:1603 | 1407 | #: src/core/gnunet-service-core_kx.c:1606 |
1408 | msgid "# bytes dropped (out of sequence)" | 1408 | msgid "# bytes dropped (out of sequence)" |
1409 | msgstr "" | 1409 | msgstr "" |
1410 | 1410 | ||
1411 | #: src/core/gnunet-service-core_kx.c:1645 | 1411 | #: src/core/gnunet-service-core_kx.c:1648 |
1412 | msgid "# bytes dropped (ancient message)" | 1412 | msgid "# bytes dropped (ancient message)" |
1413 | msgstr "" | 1413 | msgstr "" |
1414 | 1414 | ||
1415 | #: src/core/gnunet-service-core_kx.c:1653 | 1415 | #: src/core/gnunet-service-core_kx.c:1656 |
1416 | msgid "# bytes of payload decrypted" | 1416 | msgid "# bytes of payload decrypted" |
1417 | msgstr "" | 1417 | msgstr "" |
1418 | 1418 | ||
1419 | #: src/core/gnunet-service-core_sessions.c:266 | 1419 | #: src/core/gnunet-service-core_sessions.c:260 |
1420 | #: src/core/gnunet-service-core_sessions.c:356 | 1420 | #: src/core/gnunet-service-core_sessions.c:350 |
1421 | #: src/dht/gnunet-service-dht_neighbours.c:733 | 1421 | #: src/dht/gnunet-service-dht_neighbours.c:733 |
1422 | #: src/dht/gnunet-service-dht_neighbours.c:795 | 1422 | #: src/dht/gnunet-service-dht_neighbours.c:795 |
1423 | #: src/fs/gnunet-service-fs_cp.c:615 src/fs/gnunet-service-fs_cp.c:1520 | 1423 | #: src/fs/gnunet-service-fs_cp.c:615 src/fs/gnunet-service-fs_cp.c:1520 |
@@ -1428,16 +1428,16 @@ msgstr "" | |||
1428 | msgid "# peers connected" | 1428 | msgid "# peers connected" |
1429 | msgstr "" | 1429 | msgstr "" |
1430 | 1430 | ||
1431 | #: src/core/gnunet-service-core_sessions.c:302 | 1431 | #: src/core/gnunet-service-core_sessions.c:296 |
1432 | msgid "# type map refreshes sent" | 1432 | msgid "# type map refreshes sent" |
1433 | msgstr "" | 1433 | msgstr "" |
1434 | 1434 | ||
1435 | #: src/core/gnunet-service-core_sessions.c:422 | 1435 | #: src/core/gnunet-service-core_sessions.c:416 |
1436 | #, fuzzy | 1436 | #, fuzzy |
1437 | msgid "# outdated typemap confirmations received" | 1437 | msgid "# outdated typemap confirmations received" |
1438 | msgstr "保存配置失败。" | 1438 | msgstr "保存配置失败。" |
1439 | 1439 | ||
1440 | #: src/core/gnunet-service-core_sessions.c:439 | 1440 | #: src/core/gnunet-service-core_sessions.c:433 |
1441 | #, fuzzy | 1441 | #, fuzzy |
1442 | msgid "# valid typemap confirmations received" | 1442 | msgid "# valid typemap confirmations received" |
1443 | msgstr "保存配置失败。" | 1443 | msgstr "保存配置失败。" |
@@ -1451,135 +1451,6 @@ msgstr "" | |||
1451 | msgid "# updates to my type map" | 1451 | msgid "# updates to my type map" |
1452 | msgstr "" | 1452 | msgstr "" |
1453 | 1453 | ||
1454 | #: src/credential/credential_misc.c:88 | ||
1455 | #, fuzzy, c-format | ||
1456 | msgid "Unable to parse CRED record string `%s'\n" | ||
1457 | msgstr "解析配置文件“%s”失败\n" | ||
1458 | |||
1459 | #: src/credential/gnunet-credential.c:278 src/namestore/gnunet-namestore.c:776 | ||
1460 | #: src/namestore/plugin_rest_namestore.c:1009 | ||
1461 | #, c-format | ||
1462 | msgid "Ego `%s' not known to identity service\n" | ||
1463 | msgstr "" | ||
1464 | |||
1465 | #: src/credential/gnunet-credential.c:294 | ||
1466 | #: src/credential/gnunet-credential.c:446 | ||
1467 | #, fuzzy, c-format | ||
1468 | msgid "Issuer public key `%s' is not well-formed\n" | ||
1469 | msgstr "“%s”的参数无效。\n" | ||
1470 | |||
1471 | #: src/credential/gnunet-credential.c:375 | ||
1472 | #: src/credential/gnunet-credential.c:435 | ||
1473 | #, fuzzy, c-format | ||
1474 | msgid "Issuer public key not well-formed\n" | ||
1475 | msgstr "“%s”的参数无效。\n" | ||
1476 | |||
1477 | #: src/credential/gnunet-credential.c:386 | ||
1478 | #: src/credential/gnunet-credential.c:455 | ||
1479 | #, fuzzy, c-format | ||
1480 | msgid "Failed to connect to CREDENTIAL\n" | ||
1481 | msgstr "初始化“%s”服务失败。\n" | ||
1482 | |||
1483 | #: src/credential/gnunet-credential.c:392 | ||
1484 | #, c-format | ||
1485 | msgid "You must provide issuer the attribute\n" | ||
1486 | msgstr "" | ||
1487 | |||
1488 | #: src/credential/gnunet-credential.c:399 | ||
1489 | #, c-format | ||
1490 | msgid "ego required\n" | ||
1491 | msgstr "" | ||
1492 | |||
1493 | #: src/credential/gnunet-credential.c:415 | ||
1494 | #, c-format | ||
1495 | msgid "Subject public key needed\n" | ||
1496 | msgstr "" | ||
1497 | |||
1498 | #: src/credential/gnunet-credential.c:426 | ||
1499 | #, fuzzy, c-format | ||
1500 | msgid "Subject public key `%s' is not well-formed\n" | ||
1501 | msgstr "“%s”的参数无效。\n" | ||
1502 | |||
1503 | #: src/credential/gnunet-credential.c:461 | ||
1504 | #, c-format | ||
1505 | msgid "You must provide issuer and subject attributes\n" | ||
1506 | msgstr "" | ||
1507 | |||
1508 | #: src/credential/gnunet-credential.c:511 | ||
1509 | #, c-format | ||
1510 | msgid "Issuer ego required\n" | ||
1511 | msgstr "" | ||
1512 | |||
1513 | #: src/credential/gnunet-credential.c:523 | ||
1514 | #, c-format | ||
1515 | msgid "Please specify name to lookup, subject key and issuer key!\n" | ||
1516 | msgstr "" | ||
1517 | |||
1518 | #: src/credential/gnunet-credential.c:543 | ||
1519 | msgid "create credential" | ||
1520 | msgstr "" | ||
1521 | |||
1522 | #: src/credential/gnunet-credential.c:547 | ||
1523 | msgid "verify credential against attribute" | ||
1524 | msgstr "" | ||
1525 | |||
1526 | #: src/credential/gnunet-credential.c:552 | ||
1527 | msgid "The public key of the subject to lookup the credential for" | ||
1528 | msgstr "" | ||
1529 | |||
1530 | #: src/credential/gnunet-credential.c:557 | ||
1531 | msgid "The name of the credential presented by the subject" | ||
1532 | msgstr "" | ||
1533 | |||
1534 | #: src/credential/gnunet-credential.c:562 | ||
1535 | msgid "The public key of the authority to verify the credential against" | ||
1536 | msgstr "" | ||
1537 | |||
1538 | #: src/credential/gnunet-credential.c:567 | ||
1539 | #, fuzzy | ||
1540 | msgid "The ego to use" | ||
1541 | msgstr "消息尺寸" | ||
1542 | |||
1543 | #: src/credential/gnunet-credential.c:572 | ||
1544 | msgid "The issuer attribute to verify against or to issue" | ||
1545 | msgstr "" | ||
1546 | |||
1547 | #: src/credential/gnunet-credential.c:577 | ||
1548 | msgid "The time to live for the credential" | ||
1549 | msgstr "" | ||
1550 | |||
1551 | #: src/credential/gnunet-credential.c:581 | ||
1552 | msgid "collect credentials" | ||
1553 | msgstr "" | ||
1554 | |||
1555 | #: src/credential/gnunet-credential.c:595 | ||
1556 | #, fuzzy | ||
1557 | msgid "GNUnet credential resolver tool" | ||
1558 | msgstr "GNUnet 错误日志" | ||
1559 | |||
1560 | #: src/credential/gnunet-service-credential.c:1204 | ||
1561 | #: src/gns/gnunet-gns-helper-service-w32.c:727 src/gns/gnunet-gns.c:355 | ||
1562 | #, fuzzy, c-format | ||
1563 | msgid "Failed to connect to GNS\n" | ||
1564 | msgstr "初始化“%s”服务失败。\n" | ||
1565 | |||
1566 | #: src/credential/gnunet-service-credential.c:1210 | ||
1567 | #: src/namestore/gnunet-namestore-fcfsd.c:1034 | ||
1568 | #: src/namestore/gnunet-namestore.c:802 | ||
1569 | #: src/namestore/plugin_rest_namestore.c:1022 | ||
1570 | #, fuzzy, c-format | ||
1571 | msgid "Failed to connect to namestore\n" | ||
1572 | msgstr "初始化“%s”服务失败。\n" | ||
1573 | |||
1574 | #: src/credential/plugin_gnsrecord_credential.c:186 | ||
1575 | #, fuzzy, c-format | ||
1576 | msgid "Unable to parse ATTR record string `%s'\n" | ||
1577 | msgstr "解析配置文件“%s”失败\n" | ||
1578 | |||
1579 | #: src/credential/plugin_rest_credential.c:1155 src/gns/plugin_rest_gns.c:668 | ||
1580 | msgid "GNS REST API initialized\n" | ||
1581 | msgstr "" | ||
1582 | |||
1583 | #: src/datacache/datacache.c:119 src/datacache/datacache.c:294 | 1454 | #: src/datacache/datacache.c:119 src/datacache/datacache.c:294 |
1584 | #: src/datastore/gnunet-service-datastore.c:757 | 1455 | #: src/datastore/gnunet-service-datastore.c:757 |
1585 | msgid "# bytes stored" | 1456 | msgid "# bytes stored" |
@@ -1624,9 +1495,8 @@ msgstr "sqlite 数据仓库" | |||
1624 | #: src/datacache/plugin_datacache_sqlite.c:122 | 1495 | #: src/datacache/plugin_datacache_sqlite.c:122 |
1625 | #: src/datastore/plugin_datastore_mysql.c:892 | 1496 | #: src/datastore/plugin_datastore_mysql.c:892 |
1626 | #: src/datastore/plugin_datastore_sqlite.c:58 | 1497 | #: src/datastore/plugin_datastore_sqlite.c:58 |
1627 | #: src/datastore/plugin_datastore_sqlite.c:66 | 1498 | #: src/datastore/plugin_datastore_sqlite.c:66 src/my/my.c:80 src/my/my.c:92 |
1628 | #: src/identity-provider/plugin_identity_provider_sqlite.c:52 src/my/my.c:80 | 1499 | #: src/mysql/mysql.c:42 src/mysql/mysql.c:49 |
1629 | #: src/my/my.c:92 src/mysql/mysql.c:42 src/mysql/mysql.c:49 | ||
1630 | #: src/namecache/plugin_namecache_sqlite.c:53 | 1500 | #: src/namecache/plugin_namecache_sqlite.c:53 |
1631 | #: src/namestore/plugin_namestore_sqlite.c:53 | 1501 | #: src/namestore/plugin_namestore_sqlite.c:53 |
1632 | #: src/peerstore/plugin_peerstore_sqlite.c:52 | 1502 | #: src/peerstore/plugin_peerstore_sqlite.c:52 |
@@ -1644,7 +1514,6 @@ msgstr "“%s”于 %s:%d 处失败,错误为:%s\n" | |||
1644 | 1514 | ||
1645 | #: src/datacache/plugin_datacache_sqlite.c:817 | 1515 | #: src/datacache/plugin_datacache_sqlite.c:817 |
1646 | #: src/datastore/plugin_datastore_sqlite.c:456 | 1516 | #: src/datastore/plugin_datastore_sqlite.c:456 |
1647 | #: src/identity-provider/plugin_identity_provider_sqlite.c:336 | ||
1648 | #: src/namecache/plugin_namecache_sqlite.c:296 | 1517 | #: src/namecache/plugin_namecache_sqlite.c:296 |
1649 | #: src/namestore/plugin_namestore_sqlite.c:355 | 1518 | #: src/namestore/plugin_namestore_sqlite.c:355 |
1650 | msgid "Tried to close sqlite without finalizing all prepared statements.\n" | 1519 | msgid "Tried to close sqlite without finalizing all prepared statements.\n" |
@@ -1668,7 +1537,7 @@ msgstr "" | |||
1668 | msgid "# queue entries created" | 1537 | msgid "# queue entries created" |
1669 | msgstr "" | 1538 | msgstr "" |
1670 | 1539 | ||
1671 | #: src/datastore/datastore_api.c:740 | 1540 | #: src/datastore/datastore_api.c:760 |
1672 | msgid "# status messages received" | 1541 | msgid "# status messages received" |
1673 | msgstr "" | 1542 | msgstr "" |
1674 | 1543 | ||
@@ -1676,35 +1545,35 @@ msgstr "" | |||
1676 | msgid "# Results received" | 1545 | msgid "# Results received" |
1677 | msgstr "" | 1546 | msgstr "" |
1678 | 1547 | ||
1679 | #: src/datastore/datastore_api.c:941 | 1548 | #: src/datastore/datastore_api.c:920 |
1680 | msgid "# datastore connections (re)created" | 1549 | msgid "# datastore connections (re)created" |
1681 | msgstr "" | 1550 | msgstr "" |
1682 | 1551 | ||
1683 | #: src/datastore/datastore_api.c:1055 | 1552 | #: src/datastore/datastore_api.c:1034 |
1684 | msgid "# PUT requests executed" | 1553 | msgid "# PUT requests executed" |
1685 | msgstr "" | 1554 | msgstr "" |
1686 | 1555 | ||
1687 | #: src/datastore/datastore_api.c:1116 | 1556 | #: src/datastore/datastore_api.c:1095 |
1688 | msgid "# RESERVE requests executed" | 1557 | msgid "# RESERVE requests executed" |
1689 | msgstr "" | 1558 | msgstr "" |
1690 | 1559 | ||
1691 | #: src/datastore/datastore_api.c:1181 | 1560 | #: src/datastore/datastore_api.c:1160 |
1692 | msgid "# RELEASE RESERVE requests executed" | 1561 | msgid "# RELEASE RESERVE requests executed" |
1693 | msgstr "" | 1562 | msgstr "" |
1694 | 1563 | ||
1695 | #: src/datastore/datastore_api.c:1259 | 1564 | #: src/datastore/datastore_api.c:1238 |
1696 | msgid "# REMOVE requests executed" | 1565 | msgid "# REMOVE requests executed" |
1697 | msgstr "" | 1566 | msgstr "" |
1698 | 1567 | ||
1699 | #: src/datastore/datastore_api.c:1319 | 1568 | #: src/datastore/datastore_api.c:1298 |
1700 | msgid "# GET REPLICATION requests executed" | 1569 | msgid "# GET REPLICATION requests executed" |
1701 | msgstr "" | 1570 | msgstr "" |
1702 | 1571 | ||
1703 | #: src/datastore/datastore_api.c:1381 | 1572 | #: src/datastore/datastore_api.c:1360 |
1704 | msgid "# GET ZERO ANONYMITY requests executed" | 1573 | msgid "# GET ZERO ANONYMITY requests executed" |
1705 | msgstr "" | 1574 | msgstr "" |
1706 | 1575 | ||
1707 | #: src/datastore/datastore_api.c:1462 | 1576 | #: src/datastore/datastore_api.c:1441 |
1708 | msgid "# GET requests executed" | 1577 | msgid "# GET requests executed" |
1709 | msgstr "" | 1578 | msgstr "" |
1710 | 1579 | ||
@@ -1978,7 +1847,6 @@ msgid "`%s' failed at %s:%u with error: %s" | |||
1978 | msgstr "“%s”于 %s:%d 处失败,错误为:%s\n" | 1847 | msgstr "“%s”于 %s:%d 处失败,错误为:%s\n" |
1979 | 1848 | ||
1980 | #: src/datastore/plugin_datastore_sqlite.c:271 | 1849 | #: src/datastore/plugin_datastore_sqlite.c:271 |
1981 | #: src/identity-provider/plugin_identity_provider_sqlite.c:212 | ||
1982 | #: src/namecache/plugin_namecache_sqlite.c:194 | 1850 | #: src/namecache/plugin_namecache_sqlite.c:194 |
1983 | #: src/namestore/plugin_namestore_sqlite.c:222 | 1851 | #: src/namestore/plugin_namestore_sqlite.c:222 |
1984 | #: src/peerstore/plugin_peerstore_sqlite.c:535 | 1852 | #: src/peerstore/plugin_peerstore_sqlite.c:535 |
@@ -2003,7 +1871,6 @@ msgid "" | |||
2003 | msgstr "" | 1871 | msgstr "" |
2004 | 1872 | ||
2005 | #: src/datastore/plugin_datastore_sqlite.c:1337 | 1873 | #: src/datastore/plugin_datastore_sqlite.c:1337 |
2006 | #: src/identity-provider/plugin_identity_provider_sqlite.c:711 | ||
2007 | #: src/namecache/plugin_namecache_sqlite.c:603 | 1874 | #: src/namecache/plugin_namecache_sqlite.c:603 |
2008 | #: src/namestore/plugin_namestore_sqlite.c:802 | 1875 | #: src/namestore/plugin_namestore_sqlite.c:802 |
2009 | #, fuzzy | 1876 | #, fuzzy |
@@ -2072,6 +1939,52 @@ msgstr "" | |||
2072 | msgid "Prints all packets that go through the DHT." | 1939 | msgid "Prints all packets that go through the DHT." |
2073 | msgstr "" | 1940 | msgstr "" |
2074 | 1941 | ||
1942 | #: src/dht/gnunet_dht_profiler.c:1161 src/testbed/gnunet-testbed-profiler.c:253 | ||
1943 | #, fuzzy, c-format | ||
1944 | msgid "Exiting as the number of peers is %u\n" | ||
1945 | msgstr "增加 TCP/IP 的最大连接数" | ||
1946 | |||
1947 | #: src/dht/gnunet_dht_profiler.c:1188 | ||
1948 | #, fuzzy | ||
1949 | msgid "number of peers to start" | ||
1950 | msgstr "迭代次数" | ||
1951 | |||
1952 | #: src/dht/gnunet_dht_profiler.c:1194 | ||
1953 | msgid "" | ||
1954 | "maximum number of times we try to search for successor circle formation (0 " | ||
1955 | "for R5N)" | ||
1956 | msgstr "" | ||
1957 | |||
1958 | #: src/dht/gnunet_dht_profiler.c:1200 src/nse/gnunet-nse-profiler.c:853 | ||
1959 | #: src/testbed/gnunet-testbed-profiler.c:304 | ||
1960 | msgid "name of the file with the login information for the testbed" | ||
1961 | msgstr "" | ||
1962 | |||
1963 | #: src/dht/gnunet_dht_profiler.c:1206 | ||
1964 | msgid "delay between rounds for collecting statistics (default: 30 sec)" | ||
1965 | msgstr "" | ||
1966 | |||
1967 | #: src/dht/gnunet_dht_profiler.c:1212 | ||
1968 | msgid "delay to start doing PUTs (default: 1 sec)" | ||
1969 | msgstr "" | ||
1970 | |||
1971 | #: src/dht/gnunet_dht_profiler.c:1218 | ||
1972 | msgid "delay to start doing GETs (default: 5 min)" | ||
1973 | msgstr "" | ||
1974 | |||
1975 | #: src/dht/gnunet_dht_profiler.c:1223 | ||
1976 | msgid "replication degree for DHT PUTs" | ||
1977 | msgstr "" | ||
1978 | |||
1979 | #: src/dht/gnunet_dht_profiler.c:1230 | ||
1980 | msgid "timeout for DHT PUT and GET requests (default: 1 min)" | ||
1981 | msgstr "" | ||
1982 | |||
1983 | #: src/dht/gnunet_dht_profiler.c:1248 | ||
1984 | #, fuzzy | ||
1985 | msgid "Measure quality and performance of the DHT service." | ||
1986 | msgstr "无法访问该服务" | ||
1987 | |||
2075 | #: src/dht/gnunet-dht-put.c:120 | 1988 | #: src/dht/gnunet-dht-put.c:120 |
2076 | msgid "PUT request sent with key" | 1989 | msgid "PUT request sent with key" |
2077 | msgstr "" | 1990 | msgstr "" |
@@ -2321,52 +2234,6 @@ msgstr "" | |||
2321 | msgid "# DHT requests combined" | 2234 | msgid "# DHT requests combined" |
2322 | msgstr "" | 2235 | msgstr "" |
2323 | 2236 | ||
2324 | #: src/dht/gnunet_dht_profiler.c:1161 src/testbed/gnunet-testbed-profiler.c:255 | ||
2325 | #, fuzzy, c-format | ||
2326 | msgid "Exiting as the number of peers is %u\n" | ||
2327 | msgstr "增加 TCP/IP 的最大连接数" | ||
2328 | |||
2329 | #: src/dht/gnunet_dht_profiler.c:1188 | ||
2330 | #, fuzzy | ||
2331 | msgid "number of peers to start" | ||
2332 | msgstr "迭代次数" | ||
2333 | |||
2334 | #: src/dht/gnunet_dht_profiler.c:1194 | ||
2335 | msgid "" | ||
2336 | "maximum number of times we try to search for successor circle formation (0 " | ||
2337 | "for R5N)" | ||
2338 | msgstr "" | ||
2339 | |||
2340 | #: src/dht/gnunet_dht_profiler.c:1200 src/nse/gnunet-nse-profiler.c:853 | ||
2341 | #: src/testbed/gnunet-testbed-profiler.c:305 | ||
2342 | msgid "name of the file with the login information for the testbed" | ||
2343 | msgstr "" | ||
2344 | |||
2345 | #: src/dht/gnunet_dht_profiler.c:1206 | ||
2346 | msgid "delay between rounds for collecting statistics (default: 30 sec)" | ||
2347 | msgstr "" | ||
2348 | |||
2349 | #: src/dht/gnunet_dht_profiler.c:1212 | ||
2350 | msgid "delay to start doing PUTs (default: 1 sec)" | ||
2351 | msgstr "" | ||
2352 | |||
2353 | #: src/dht/gnunet_dht_profiler.c:1218 | ||
2354 | msgid "delay to start doing GETs (default: 5 min)" | ||
2355 | msgstr "" | ||
2356 | |||
2357 | #: src/dht/gnunet_dht_profiler.c:1223 | ||
2358 | msgid "replication degree for DHT PUTs" | ||
2359 | msgstr "" | ||
2360 | |||
2361 | #: src/dht/gnunet_dht_profiler.c:1230 | ||
2362 | msgid "timeout for DHT PUT and GET requests (default: 1 min)" | ||
2363 | msgstr "" | ||
2364 | |||
2365 | #: src/dht/gnunet_dht_profiler.c:1248 | ||
2366 | #, fuzzy | ||
2367 | msgid "Measure quality and performance of the DHT service." | ||
2368 | msgstr "无法访问该服务" | ||
2369 | |||
2370 | #: src/dht/plugin_block_dht.c:187 | 2237 | #: src/dht/plugin_block_dht.c:187 |
2371 | #, c-format | 2238 | #, c-format |
2372 | msgid "Block not of type %u\n" | 2239 | msgid "Block not of type %u\n" |
@@ -2894,7 +2761,7 @@ msgstr "“%s”的参数无效。\n" | |||
2894 | msgid "Failed to not connect to `%s' service.\n" | 2761 | msgid "Failed to not connect to `%s' service.\n" |
2895 | msgstr "初始化“%s”服务失败。\n" | 2762 | msgstr "初始化“%s”服务失败。\n" |
2896 | 2763 | ||
2897 | #: src/fs/fs_misc.c:126 | 2764 | #: src/fs/fs_misc.c:128 |
2898 | #, c-format | 2765 | #, c-format |
2899 | msgid "Did not find mime type `%s' in extension list.\n" | 2766 | msgid "Did not find mime type `%s' in extension list.\n" |
2900 | msgstr "" | 2767 | msgstr "" |
@@ -3321,6 +3188,14 @@ msgid "" | |||
3321 | "chk/...)" | 3188 | "chk/...)" |
3322 | msgstr "" | 3189 | msgstr "" |
3323 | 3190 | ||
3191 | #: src/fs/gnunet-fs.c:119 | ||
3192 | msgid "print a list of all indexed files" | ||
3193 | msgstr "" | ||
3194 | |||
3195 | #: src/fs/gnunet-fs.c:130 | ||
3196 | msgid "Special file-sharing operations" | ||
3197 | msgstr "" | ||
3198 | |||
3324 | #: src/fs/gnunet-fs-profiler.c:211 | 3199 | #: src/fs/gnunet-fs-profiler.c:211 |
3325 | msgid "run the experiment with COUNT peers" | 3200 | msgid "run the experiment with COUNT peers" |
3326 | msgstr "" | 3201 | msgstr "" |
@@ -3337,14 +3212,6 @@ msgstr "" | |||
3337 | msgid "run a testbed to measure file-sharing performance" | 3212 | msgid "run a testbed to measure file-sharing performance" |
3338 | msgstr "" | 3213 | msgstr "" |
3339 | 3214 | ||
3340 | #: src/fs/gnunet-fs.c:119 | ||
3341 | msgid "print a list of all indexed files" | ||
3342 | msgstr "" | ||
3343 | |||
3344 | #: src/fs/gnunet-fs.c:130 | ||
3345 | msgid "Special file-sharing operations" | ||
3346 | msgstr "" | ||
3347 | |||
3348 | #: src/fs/gnunet-publish.c:219 src/fs/gnunet-publish.c:231 | 3215 | #: src/fs/gnunet-publish.c:219 src/fs/gnunet-publish.c:231 |
3349 | #, c-format | 3216 | #, c-format |
3350 | msgid "Publishing `%s' at %llu/%llu (%s remaining)\n" | 3217 | msgid "Publishing `%s' at %llu/%llu (%s remaining)\n" |
@@ -3999,11 +3866,22 @@ msgstr "" | |||
3999 | msgid "GNUnet DNS-to-GNS proxy (a DNS server)" | 3866 | msgid "GNUnet DNS-to-GNS proxy (a DNS server)" |
4000 | msgstr "" | 3867 | msgstr "" |
4001 | 3868 | ||
4002 | #: src/gns/gnunet-gns-helper-service-w32.c:602 | 3869 | #: src/gns/gnunet-gns.c:235 src/gns/plugin_rest_gns.c:346 |
4003 | msgid "Not ready to process requests, lacking ego data\n" | 3870 | #, c-format |
3871 | msgid "Invalid typename specified, assuming `ANY'\n" | ||
4004 | msgstr "" | 3872 | msgstr "" |
4005 | 3873 | ||
4006 | #: src/gns/gnunet-gns-helper-service-w32.c:701 src/gns/gnunet-gns.c:315 | 3874 | #: src/gns/gnunet-gns.c:252 |
3875 | #, c-format | ||
3876 | msgid "Please specify name to lookup!\n" | ||
3877 | msgstr "" | ||
3878 | |||
3879 | #: src/gns/gnunet-gns.c:276 | ||
3880 | #, c-format | ||
3881 | msgid "Ego for `%s' not found, cannot perform lookup.\n" | ||
3882 | msgstr "" | ||
3883 | |||
3884 | #: src/gns/gnunet-gns.c:315 src/gns/gnunet-gns-helper-service-w32.c:701 | ||
4007 | #: src/gns/plugin_rest_gns.c:422 | 3885 | #: src/gns/plugin_rest_gns.c:422 |
4008 | #, c-format | 3886 | #, c-format |
4009 | msgid "" | 3887 | msgid "" |
@@ -4011,6 +3889,49 @@ msgid "" | |||
4011 | "gns-import.sh?\n" | 3889 | "gns-import.sh?\n" |
4012 | msgstr "" | 3890 | msgstr "" |
4013 | 3891 | ||
3892 | #: src/gns/gnunet-gns.c:355 src/gns/gnunet-gns-helper-service-w32.c:727 | ||
3893 | #, fuzzy, c-format | ||
3894 | msgid "Failed to connect to GNS\n" | ||
3895 | msgstr "初始化“%s”服务失败。\n" | ||
3896 | |||
3897 | #: src/gns/gnunet-gns.c:374 | ||
3898 | #, c-format | ||
3899 | msgid "Public key `%s' is not well-formed\n" | ||
3900 | msgstr "" | ||
3901 | |||
3902 | #: src/gns/gnunet-gns.c:428 | ||
3903 | msgid "Lookup a record for the given name" | ||
3904 | msgstr "" | ||
3905 | |||
3906 | #: src/gns/gnunet-gns.c:434 | ||
3907 | msgid "Specify the type of the record to lookup" | ||
3908 | msgstr "" | ||
3909 | |||
3910 | #: src/gns/gnunet-gns.c:440 | ||
3911 | msgid "Specify timeout for the lookup" | ||
3912 | msgstr "" | ||
3913 | |||
3914 | #: src/gns/gnunet-gns.c:445 | ||
3915 | msgid "No unneeded output" | ||
3916 | msgstr "" | ||
3917 | |||
3918 | #: src/gns/gnunet-gns.c:451 | ||
3919 | msgid "Specify the public key of the zone to lookup the record in" | ||
3920 | msgstr "" | ||
3921 | |||
3922 | #: src/gns/gnunet-gns.c:457 | ||
3923 | msgid "Specify the name of the ego of the zone to lookup the record in" | ||
3924 | msgstr "" | ||
3925 | |||
3926 | #: src/gns/gnunet-gns.c:476 | ||
3927 | #, fuzzy | ||
3928 | msgid "GNUnet GNS resolver tool" | ||
3929 | msgstr "GNUnet 错误日志" | ||
3930 | |||
3931 | #: src/gns/gnunet-gns-helper-service-w32.c:602 | ||
3932 | msgid "Not ready to process requests, lacking ego data\n" | ||
3933 | msgstr "" | ||
3934 | |||
4014 | #: src/gns/gnunet-gns-helper-service-w32.c:739 | 3935 | #: src/gns/gnunet-gns-helper-service-w32.c:739 |
4015 | #, fuzzy, c-format | 3936 | #, fuzzy, c-format |
4016 | msgid "Failed to connect to identity service\n" | 3937 | msgid "Failed to connect to identity service\n" |
@@ -4035,161 +3956,112 @@ msgstr "" | |||
4035 | msgid "%s failed at %s:%d: `%s'\n" | 3956 | msgid "%s failed at %s:%d: `%s'\n" |
4036 | msgstr "" | 3957 | msgstr "" |
4037 | 3958 | ||
4038 | #: src/gns/gnunet-gns-proxy.c:878 | 3959 | #: src/gns/gnunet-gns-proxy.c:887 |
4039 | #, fuzzy, c-format | 3960 | #, fuzzy, c-format |
4040 | msgid "Unsupported CURL SSL backend %d\n" | 3961 | msgid "Unsupported CURL SSL backend %d\n" |
4041 | msgstr "未知的命令“%s”。\n" | 3962 | msgstr "未知的命令“%s”。\n" |
4042 | 3963 | ||
4043 | #: src/gns/gnunet-gns-proxy.c:901 | 3964 | #: src/gns/gnunet-gns-proxy.c:910 |
4044 | #, fuzzy, c-format | 3965 | #, fuzzy, c-format |
4045 | msgid "Failed to fetch CN from cert: %s\n" | 3966 | msgid "Failed to fetch CN from cert: %s\n" |
4046 | msgstr "打开日志文件“%s”失败:%s\n" | 3967 | msgstr "打开日志文件“%s”失败:%s\n" |
4047 | 3968 | ||
4048 | #: src/gns/gnunet-gns-proxy.c:924 | 3969 | #: src/gns/gnunet-gns-proxy.c:933 |
4049 | #, fuzzy, c-format | 3970 | #, fuzzy, c-format |
4050 | msgid "Failed to initialize DANE: %s\n" | 3971 | msgid "Failed to initialize DANE: %s\n" |
4051 | msgstr "无法初始化 SQLite:%s。\n" | 3972 | msgstr "无法初始化 SQLite:%s。\n" |
4052 | 3973 | ||
4053 | #: src/gns/gnunet-gns-proxy.c:937 | 3974 | #: src/gns/gnunet-gns-proxy.c:946 |
4054 | #, fuzzy, c-format | 3975 | #, fuzzy, c-format |
4055 | msgid "Failed to parse DANE record: %s\n" | 3976 | msgid "Failed to parse DANE record: %s\n" |
4056 | msgstr "打开日志文件“%s”失败:%s\n" | 3977 | msgstr "打开日志文件“%s”失败:%s\n" |
4057 | 3978 | ||
4058 | #: src/gns/gnunet-gns-proxy.c:952 | 3979 | #: src/gns/gnunet-gns-proxy.c:961 |
4059 | #, fuzzy, c-format | 3980 | #, fuzzy, c-format |
4060 | msgid "Failed to verify TLS connection using DANE: %s\n" | 3981 | msgid "Failed to verify TLS connection using DANE: %s\n" |
4061 | msgstr "解析配置文件“%s”失败\n" | 3982 | msgstr "解析配置文件“%s”失败\n" |
4062 | 3983 | ||
4063 | #: src/gns/gnunet-gns-proxy.c:962 | 3984 | #: src/gns/gnunet-gns-proxy.c:971 |
4064 | #, c-format | 3985 | #, c-format |
4065 | msgid "Failed DANE verification failed with GnuTLS verify status code: %u\n" | 3986 | msgid "Failed DANE verification failed with GnuTLS verify status code: %u\n" |
4066 | msgstr "" | 3987 | msgstr "" |
4067 | 3988 | ||
4068 | #: src/gns/gnunet-gns-proxy.c:986 | 3989 | #: src/gns/gnunet-gns-proxy.c:995 |
4069 | #, c-format | 3990 | #, c-format |
4070 | msgid "SSL certificate subject name (%s) does not match `%s'\n" | 3991 | msgid "SSL certificate subject name (%s) does not match `%s'\n" |
4071 | msgstr "" | 3992 | msgstr "" |
4072 | 3993 | ||
4073 | #: src/gns/gnunet-gns-proxy.c:1095 | 3994 | #: src/gns/gnunet-gns-proxy.c:1104 |
4074 | #, c-format | 3995 | #, c-format |
4075 | msgid "Cookie domain `%s' supplied by server is invalid\n" | 3996 | msgid "Cookie domain `%s' supplied by server is invalid\n" |
4076 | msgstr "" | 3997 | msgstr "" |
4077 | 3998 | ||
4078 | #: src/gns/gnunet-gns-proxy.c:1699 | 3999 | #: src/gns/gnunet-gns-proxy.c:1709 |
4079 | #, fuzzy, c-format | 4000 | #, fuzzy, c-format |
4080 | msgid "Unsupported HTTP method `%s'\n" | 4001 | msgid "Unsupported HTTP method `%s'\n" |
4081 | msgstr "未知的命令“%s”。\n" | 4002 | msgstr "未知的命令“%s”。\n" |
4082 | 4003 | ||
4083 | #: src/gns/gnunet-gns-proxy.c:2162 | 4004 | #: src/gns/gnunet-gns-proxy.c:2172 |
4084 | #, fuzzy, c-format | 4005 | #, fuzzy, c-format |
4085 | msgid "Unable to import private key from file `%s'\n" | 4006 | msgid "Unable to import private key from file `%s'\n" |
4086 | msgstr "无法创建用户账户:" | 4007 | msgstr "无法创建用户账户:" |
4087 | 4008 | ||
4088 | #: src/gns/gnunet-gns-proxy.c:2192 | 4009 | #: src/gns/gnunet-gns-proxy.c:2202 |
4089 | #, fuzzy, c-format | 4010 | #, fuzzy, c-format |
4090 | msgid "Unable to import certificate %s\n" | 4011 | msgid "Unable to import certificate %s\n" |
4091 | msgstr "无法保存配置文件“%s”:" | 4012 | msgstr "无法保存配置文件“%s”:" |
4092 | 4013 | ||
4093 | #: src/gns/gnunet-gns-proxy.c:2365 | 4014 | #: src/gns/gnunet-gns-proxy.c:2375 |
4094 | #, fuzzy, c-format | 4015 | #, fuzzy, c-format |
4095 | msgid "Failed to start HTTPS server for `%s'\n" | 4016 | msgid "Failed to start HTTPS server for `%s'\n" |
4096 | msgstr "初始化“%s”服务失败。\n" | 4017 | msgstr "初始化“%s”服务失败。\n" |
4097 | 4018 | ||
4098 | #: src/gns/gnunet-gns-proxy.c:2384 src/rest/gnunet-rest-server.c:533 | 4019 | #: src/gns/gnunet-gns-proxy.c:2394 src/rest/gnunet-rest-server.c:533 |
4099 | #, fuzzy | 4020 | #, fuzzy |
4100 | msgid "Failed to pass client to MHD\n" | 4021 | msgid "Failed to pass client to MHD\n" |
4101 | msgstr "初始化“%s”服务失败。\n" | 4022 | msgstr "初始化“%s”服务失败。\n" |
4102 | 4023 | ||
4103 | #: src/gns/gnunet-gns-proxy.c:2704 | 4024 | #: src/gns/gnunet-gns-proxy.c:2716 |
4104 | #, fuzzy, c-format | 4025 | #, fuzzy, c-format |
4105 | msgid "Unsupported socks version %d\n" | 4026 | msgid "Unsupported socks version %d\n" |
4106 | msgstr "未知的命令“%s”。\n" | 4027 | msgstr "未知的命令“%s”。\n" |
4107 | 4028 | ||
4108 | #: src/gns/gnunet-gns-proxy.c:2733 | 4029 | #: src/gns/gnunet-gns-proxy.c:2745 |
4109 | #, fuzzy, c-format | 4030 | #, fuzzy, c-format |
4110 | msgid "Unsupported socks command %d\n" | 4031 | msgid "Unsupported socks command %d\n" |
4111 | msgstr "未知的命令“%s”。\n" | 4032 | msgstr "未知的命令“%s”。\n" |
4112 | 4033 | ||
4113 | #: src/gns/gnunet-gns-proxy.c:2751 src/gns/gnunet-gns-proxy.c:2780 | 4034 | #: src/gns/gnunet-gns-proxy.c:2763 src/gns/gnunet-gns-proxy.c:2792 |
4114 | msgid "SSL connection to plain IPv4 address requested\n" | 4035 | msgid "SSL connection to plain IPv4 address requested\n" |
4115 | msgstr "" | 4036 | msgstr "" |
4116 | 4037 | ||
4117 | #: src/gns/gnunet-gns-proxy.c:2830 | 4038 | #: src/gns/gnunet-gns-proxy.c:2842 |
4118 | #, fuzzy, c-format | 4039 | #, fuzzy, c-format |
4119 | msgid "Unsupported socks address type %d\n" | 4040 | msgid "Unsupported socks address type %d\n" |
4120 | msgstr "未知的命令“%s”。\n" | 4041 | msgstr "未知的命令“%s”。\n" |
4121 | 4042 | ||
4122 | #: src/gns/gnunet-gns-proxy.c:3165 src/gns/gnunet-service-gns.c:403 | 4043 | #: src/gns/gnunet-gns-proxy.c:3177 src/gns/gnunet-service-gns.c:403 |
4123 | #, c-format | 4044 | #, c-format |
4124 | msgid "No ego configured for `%s`\n" | 4045 | msgid "No ego configured for `%s`\n" |
4125 | msgstr "" | 4046 | msgstr "" |
4126 | 4047 | ||
4127 | #: src/gns/gnunet-gns-proxy.c:3226 | 4048 | #: src/gns/gnunet-gns-proxy.c:3238 |
4128 | #, fuzzy, c-format | 4049 | #, fuzzy, c-format |
4129 | msgid "Failed to load SSL/TLS key and certificate from `%s'\n" | 4050 | msgid "Failed to load SSL/TLS key and certificate from `%s'\n" |
4130 | msgstr "解析配置文件“%s”失败\n" | 4051 | msgstr "解析配置文件“%s”失败\n" |
4131 | 4052 | ||
4132 | #: src/gns/gnunet-gns-proxy.c:3269 | 4053 | #: src/gns/gnunet-gns-proxy.c:3281 |
4133 | msgid "listen on specified port (default: 7777)" | 4054 | msgid "listen on specified port (default: 7777)" |
4134 | msgstr "" | 4055 | msgstr "" |
4135 | 4056 | ||
4136 | #: src/gns/gnunet-gns-proxy.c:3275 | 4057 | #: src/gns/gnunet-gns-proxy.c:3287 |
4137 | msgid "pem file to use as CA" | 4058 | msgid "pem file to use as CA" |
4138 | msgstr "" | 4059 | msgstr "" |
4139 | 4060 | ||
4140 | #: src/gns/gnunet-gns-proxy.c:3300 | 4061 | #: src/gns/gnunet-gns-proxy.c:3312 |
4141 | msgid "GNUnet GNS proxy" | 4062 | msgid "GNUnet GNS proxy" |
4142 | msgstr "" | 4063 | msgstr "" |
4143 | 4064 | ||
4144 | #: src/gns/gnunet-gns.c:235 src/gns/plugin_rest_gns.c:346 | ||
4145 | #, c-format | ||
4146 | msgid "Invalid typename specified, assuming `ANY'\n" | ||
4147 | msgstr "" | ||
4148 | |||
4149 | #: src/gns/gnunet-gns.c:252 | ||
4150 | #, c-format | ||
4151 | msgid "Please specify name to lookup!\n" | ||
4152 | msgstr "" | ||
4153 | |||
4154 | #: src/gns/gnunet-gns.c:276 | ||
4155 | #, c-format | ||
4156 | msgid "Ego for `%s' not found, cannot perform lookup.\n" | ||
4157 | msgstr "" | ||
4158 | |||
4159 | #: src/gns/gnunet-gns.c:374 | ||
4160 | #, c-format | ||
4161 | msgid "Public key `%s' is not well-formed\n" | ||
4162 | msgstr "" | ||
4163 | |||
4164 | #: src/gns/gnunet-gns.c:428 | ||
4165 | msgid "Lookup a record for the given name" | ||
4166 | msgstr "" | ||
4167 | |||
4168 | #: src/gns/gnunet-gns.c:434 | ||
4169 | msgid "Specify the type of the record to lookup" | ||
4170 | msgstr "" | ||
4171 | |||
4172 | #: src/gns/gnunet-gns.c:440 | ||
4173 | msgid "Specify timeout for the lookup" | ||
4174 | msgstr "" | ||
4175 | |||
4176 | #: src/gns/gnunet-gns.c:445 | ||
4177 | msgid "No unneeded output" | ||
4178 | msgstr "" | ||
4179 | |||
4180 | #: src/gns/gnunet-gns.c:451 | ||
4181 | msgid "Specify the public key of the zone to lookup the record in" | ||
4182 | msgstr "" | ||
4183 | |||
4184 | #: src/gns/gnunet-gns.c:457 | ||
4185 | msgid "Specify the name of the ego of the zone to lookup the record in" | ||
4186 | msgstr "" | ||
4187 | |||
4188 | #: src/gns/gnunet-gns.c:476 | ||
4189 | #, fuzzy | ||
4190 | msgid "GNUnet GNS resolver tool" | ||
4191 | msgstr "GNUnet 错误日志" | ||
4192 | |||
4193 | #: src/gns/gnunet-service-gns.c:442 | 4065 | #: src/gns/gnunet-service-gns.c:442 |
4194 | #, fuzzy | 4066 | #, fuzzy |
4195 | msgid "Failed to connect to the namecache!\n" | 4067 | msgid "Failed to connect to the namecache!\n" |
@@ -4254,35 +4126,44 @@ msgstr "" | |||
4254 | msgid "Hostname `%s' is not well-formed, resolution fails\n" | 4126 | msgid "Hostname `%s' is not well-formed, resolution fails\n" |
4255 | msgstr "" | 4127 | msgstr "" |
4256 | 4128 | ||
4257 | #: src/gns/plugin_gnsrecord_gns.c:179 | 4129 | #: src/gns/plugin_gnsrecord_gns.c:203 |
4258 | #, fuzzy, c-format | 4130 | #, fuzzy, c-format |
4259 | msgid "Unable to parse PKEY record `%s'\n" | 4131 | msgid "Unable to parse PKEY record `%s'\n" |
4260 | msgstr "解析配置文件“%s”失败\n" | 4132 | msgstr "解析配置文件“%s”失败\n" |
4261 | 4133 | ||
4262 | #: src/gns/plugin_gnsrecord_gns.c:208 | 4134 | #: src/gns/plugin_gnsrecord_gns.c:232 |
4263 | #, fuzzy, c-format | 4135 | #, fuzzy, c-format |
4264 | msgid "Unable to parse GNS2DNS record `%s'\n" | 4136 | msgid "Unable to parse GNS2DNS record `%s'\n" |
4265 | msgstr "解析配置文件“%s”失败\n" | 4137 | msgstr "解析配置文件“%s”失败\n" |
4266 | 4138 | ||
4267 | #: src/gns/plugin_gnsrecord_gns.c:229 | 4139 | #: src/gns/plugin_gnsrecord_gns.c:253 |
4268 | #, fuzzy, c-format | 4140 | #, fuzzy, c-format |
4269 | msgid "Failed to serialize GNS2DNS record with value `%s'\n" | 4141 | msgid "Failed to serialize GNS2DNS record with value `%s'\n" |
4270 | msgstr "解析配置文件“%s”失败\n" | 4142 | msgstr "解析配置文件“%s”失败\n" |
4271 | 4143 | ||
4272 | #: src/gns/plugin_gnsrecord_gns.c:252 | 4144 | #: src/gns/plugin_gnsrecord_gns.c:276 |
4273 | #, fuzzy, c-format | 4145 | #, fuzzy, c-format |
4274 | msgid "Unable to parse VPN record string `%s'\n" | 4146 | msgid "Unable to parse VPN record string `%s'\n" |
4275 | msgstr "解析配置文件“%s”失败\n" | 4147 | msgstr "解析配置文件“%s”失败\n" |
4276 | 4148 | ||
4277 | #: src/gns/plugin_gnsrecord_gns.c:288 | 4149 | #: src/gns/plugin_gnsrecord_gns.c:312 |
4278 | #, fuzzy, c-format | 4150 | #, fuzzy, c-format |
4279 | msgid "Unable to parse BOX record string `%s'\n" | 4151 | msgid "Unable to parse BOX record string `%s'\n" |
4280 | msgstr "解析配置文件“%s”失败\n" | 4152 | msgstr "解析配置文件“%s”失败\n" |
4281 | 4153 | ||
4154 | #: src/gns/plugin_gnsrecord_gns.c:360 | ||
4155 | #, fuzzy, c-format | ||
4156 | msgid "Unable to parse REVERSE record string `%s'\n" | ||
4157 | msgstr "解析配置文件“%s”失败\n" | ||
4158 | |||
4282 | #: src/gns/plugin_rest_gns.c:384 | 4159 | #: src/gns/plugin_rest_gns.c:384 |
4283 | msgid "Ego for not found, cannot perform lookup.\n" | 4160 | msgid "Ego for not found, cannot perform lookup.\n" |
4284 | msgstr "" | 4161 | msgstr "" |
4285 | 4162 | ||
4163 | #: src/gns/plugin_rest_gns.c:668 | ||
4164 | msgid "GNS REST API initialized\n" | ||
4165 | msgstr "" | ||
4166 | |||
4286 | #: src/gnsrecord/plugin_gnsrecord_dns.c:359 | 4167 | #: src/gnsrecord/plugin_gnsrecord_dns.c:359 |
4287 | #, fuzzy, c-format | 4168 | #, fuzzy, c-format |
4288 | msgid "Unable to parse IPv4 address `%s'\n" | 4169 | msgid "Unable to parse IPv4 address `%s'\n" |
@@ -4388,36 +4269,36 @@ msgstr "创建用户出错" | |||
4388 | msgid "Modified %u addresses, wrote %u bytes\n" | 4269 | msgid "Modified %u addresses, wrote %u bytes\n" |
4389 | msgstr "" | 4270 | msgstr "" |
4390 | 4271 | ||
4391 | #: src/hello/hello.c:1103 | 4272 | #: src/hello/hello.c:1110 |
4392 | #, fuzzy | 4273 | #, fuzzy |
4393 | msgid "Failed to parse HELLO message: missing expiration time\n" | 4274 | msgid "Failed to parse HELLO message: missing expiration time\n" |
4394 | msgstr "保存配置失败。" | 4275 | msgstr "保存配置失败。" |
4395 | 4276 | ||
4396 | #: src/hello/hello.c:1112 | 4277 | #: src/hello/hello.c:1119 |
4397 | #, fuzzy | 4278 | #, fuzzy |
4398 | msgid "Failed to parse HELLO message: invalid expiration time\n" | 4279 | msgid "Failed to parse HELLO message: invalid expiration time\n" |
4399 | msgstr "保存配置失败。" | 4280 | msgstr "保存配置失败。" |
4400 | 4281 | ||
4401 | #: src/hello/hello.c:1122 | 4282 | #: src/hello/hello.c:1129 |
4402 | #, fuzzy | 4283 | #, fuzzy |
4403 | msgid "Failed to parse HELLO message: malformed\n" | 4284 | msgid "Failed to parse HELLO message: malformed\n" |
4404 | msgstr "打开日志文件“%s”失败:%s\n" | 4285 | msgstr "打开日志文件“%s”失败:%s\n" |
4405 | 4286 | ||
4406 | #: src/hello/hello.c:1133 | 4287 | #: src/hello/hello.c:1140 |
4407 | msgid "Failed to parse HELLO message: missing transport plugin\n" | 4288 | msgid "Failed to parse HELLO message: missing transport plugin\n" |
4408 | msgstr "" | 4289 | msgstr "" |
4409 | 4290 | ||
4410 | #: src/hello/hello.c:1151 | 4291 | #: src/hello/hello.c:1158 |
4411 | #, c-format | 4292 | #, c-format |
4412 | msgid "Plugin `%s' not found, skipping address\n" | 4293 | msgid "Plugin `%s' not found, skipping address\n" |
4413 | msgstr "" | 4294 | msgstr "" |
4414 | 4295 | ||
4415 | #: src/hello/hello.c:1159 | 4296 | #: src/hello/hello.c:1166 |
4416 | #, c-format | 4297 | #, c-format |
4417 | msgid "Plugin `%s' does not support URIs yet\n" | 4298 | msgid "Plugin `%s' does not support URIs yet\n" |
4418 | msgstr "" | 4299 | msgstr "" |
4419 | 4300 | ||
4420 | #: src/hello/hello.c:1174 | 4301 | #: src/hello/hello.c:1181 |
4421 | #, fuzzy, c-format | 4302 | #, fuzzy, c-format |
4422 | msgid "Failed to parse `%s' as an address for plugin `%s'\n" | 4303 | msgid "Failed to parse `%s' as an address for plugin `%s'\n" |
4423 | msgstr "找不到接口“%s”的一个 IP 地址。\n" | 4304 | msgstr "找不到接口“%s”的一个 IP 地址。\n" |
@@ -4663,7 +4544,7 @@ msgid "# hostlist advertisements send" | |||
4663 | msgstr "" | 4544 | msgstr "" |
4664 | 4545 | ||
4665 | #: src/hostlist/gnunet-daemon-hostlist_server.c:679 | 4546 | #: src/hostlist/gnunet-daemon-hostlist_server.c:679 |
4666 | #: src/transport/gnunet-service-transport.c:2803 | 4547 | #: src/transport/gnunet-service-transport.c:2815 |
4667 | msgid "Could not access PEERINFO service. Exiting.\n" | 4548 | msgid "Could not access PEERINFO service. Exiting.\n" |
4668 | msgstr "" | 4549 | msgstr "" |
4669 | 4550 | ||
@@ -4707,52 +4588,6 @@ msgstr "“%s”不可用。\n" | |||
4707 | msgid "Could not start hostlist HTTP server on port %u\n" | 4588 | msgid "Could not start hostlist HTTP server on port %u\n" |
4708 | msgstr "" | 4589 | msgstr "" |
4709 | 4590 | ||
4710 | #: src/identity-provider/gnunet-idp.c:348 | ||
4711 | #, fuzzy | ||
4712 | msgid "Ego is required\n" | ||
4713 | msgstr "%s:选项“%s”有歧义\n" | ||
4714 | |||
4715 | #: src/identity-provider/gnunet-idp.c:370 | ||
4716 | msgid "Add attribute" | ||
4717 | msgstr "" | ||
4718 | |||
4719 | #: src/identity-provider/gnunet-idp.c:376 | ||
4720 | msgid "Attribute value" | ||
4721 | msgstr "" | ||
4722 | |||
4723 | #: src/identity-provider/gnunet-idp.c:381 | ||
4724 | msgid "Ego" | ||
4725 | msgstr "" | ||
4726 | |||
4727 | #: src/identity-provider/gnunet-idp.c:386 | ||
4728 | msgid "Audience (relying party)" | ||
4729 | msgstr "" | ||
4730 | |||
4731 | #: src/identity-provider/gnunet-idp.c:390 | ||
4732 | msgid "List attributes for Ego" | ||
4733 | msgstr "" | ||
4734 | |||
4735 | #: src/identity-provider/gnunet-idp.c:395 | ||
4736 | msgid "Issue a ticket" | ||
4737 | msgstr "" | ||
4738 | |||
4739 | #: src/identity-provider/gnunet-idp.c:400 | ||
4740 | msgid "Consume a ticket" | ||
4741 | msgstr "" | ||
4742 | |||
4743 | #: src/identity-provider/gnunet-idp.c:405 | ||
4744 | msgid "Revoke a ticket" | ||
4745 | msgstr "" | ||
4746 | |||
4747 | #: src/identity-provider/identity_provider_api.c:429 | ||
4748 | #, fuzzy | ||
4749 | msgid "failed to store record\n" | ||
4750 | msgstr "运行 %s失败:%s %d\n" | ||
4751 | |||
4752 | #: src/identity-provider/plugin_rest_identity_provider.c:1175 | ||
4753 | msgid "Identity Provider REST API initialized\n" | ||
4754 | msgstr "" | ||
4755 | |||
4756 | #: src/identity/gnunet-identity.c:179 | 4591 | #: src/identity/gnunet-identity.c:179 |
4757 | #, fuzzy, c-format | 4592 | #, fuzzy, c-format |
4758 | msgid "Failed to create ego: %s\n" | 4593 | msgid "Failed to create ego: %s\n" |
@@ -4840,10 +4675,32 @@ msgstr "解析配置文件“%s”失败\n" | |||
4840 | msgid "Failed to create directory `%s' for storing egos\n" | 4675 | msgid "Failed to create directory `%s' for storing egos\n" |
4841 | msgstr "解析配置文件“%s”失败\n" | 4676 | msgstr "解析配置文件“%s”失败\n" |
4842 | 4677 | ||
4843 | #: src/identity/plugin_rest_identity.c:964 | 4678 | #: src/identity/plugin_rest_identity.c:967 |
4844 | msgid "Identity REST API initialized\n" | 4679 | msgid "Identity REST API initialized\n" |
4845 | msgstr "" | 4680 | msgstr "" |
4846 | 4681 | ||
4682 | #: src/identity-provider/gnunet-identity-token.c:66 | ||
4683 | #, fuzzy | ||
4684 | msgid "Option `-t' is required\n" | ||
4685 | msgstr "%s:选项“%s”有歧义\n" | ||
4686 | |||
4687 | #: src/identity-provider/gnunet-identity-token.c:77 | ||
4688 | #, fuzzy, c-format | ||
4689 | msgid "Token `%s' is malformed\n" | ||
4690 | msgstr "“%s”的参数无效。\n" | ||
4691 | |||
4692 | #: src/identity-provider/gnunet-identity-token.c:166 | ||
4693 | msgid "GNUid token" | ||
4694 | msgstr "" | ||
4695 | |||
4696 | #: src/identity-provider/gnunet-identity-token.c:171 | ||
4697 | msgid "Print token contents" | ||
4698 | msgstr "" | ||
4699 | |||
4700 | #: src/identity-provider/plugin_rest_identity_provider.c:1166 | ||
4701 | msgid "Identity Token REST API initialized\n" | ||
4702 | msgstr "" | ||
4703 | |||
4847 | #: src/json/json.c:119 | 4704 | #: src/json/json.c:119 |
4848 | #, fuzzy, c-format | 4705 | #, fuzzy, c-format |
4849 | msgid "Failed to parse JSON in option `%s': %s (%s)\n" | 4706 | msgid "Failed to parse JSON in option `%s': %s (%s)\n" |
@@ -4944,79 +4801,19 @@ msgstr "发送消息失败。\n" | |||
4944 | msgid "flat plugin running\n" | 4801 | msgid "flat plugin running\n" |
4945 | msgstr "sqlite 数据仓库" | 4802 | msgstr "sqlite 数据仓库" |
4946 | 4803 | ||
4947 | #: src/namestore/gnunet-namestore-fcfsd.c:508 | ||
4948 | #, fuzzy, c-format | ||
4949 | msgid "Unsupported form value `%s'\n" | ||
4950 | msgstr "未知的命令“%s”。\n" | ||
4951 | |||
4952 | #: src/namestore/gnunet-namestore-fcfsd.c:535 | ||
4953 | #, fuzzy, c-format | ||
4954 | msgid "Failed to create record for domain `%s': %s\n" | ||
4955 | msgstr "解析配置文件“%s”失败\n" | ||
4956 | |||
4957 | #: src/namestore/gnunet-namestore-fcfsd.c:555 | ||
4958 | msgid "Error when mapping zone to name\n" | ||
4959 | msgstr "" | ||
4960 | |||
4961 | #: src/namestore/gnunet-namestore-fcfsd.c:585 | ||
4962 | #, c-format | ||
4963 | msgid "Found existing name `%s' for the given key\n" | ||
4964 | msgstr "" | ||
4965 | |||
4966 | #: src/namestore/gnunet-namestore-fcfsd.c:662 | ||
4967 | #, c-format | ||
4968 | msgid "Found %u existing records for domain `%s'\n" | ||
4969 | msgstr "" | ||
4970 | |||
4971 | #: src/namestore/gnunet-namestore-fcfsd.c:718 | ||
4972 | #, fuzzy, c-format | ||
4973 | msgid "Failed to create page for `%s'\n" | ||
4974 | msgstr "发送消息失败。\n" | ||
4975 | |||
4976 | #: src/namestore/gnunet-namestore-fcfsd.c:734 | ||
4977 | #, fuzzy, c-format | ||
4978 | msgid "Failed to setup post processor for `%s'\n" | ||
4979 | msgstr "解析配置文件“%s”失败\n" | ||
4980 | |||
4981 | #: src/namestore/gnunet-namestore-fcfsd.c:770 | ||
4982 | msgid "Domain name must not contain `.'\n" | ||
4983 | msgstr "" | ||
4984 | |||
4985 | #: src/namestore/gnunet-namestore-fcfsd.c:778 | ||
4986 | msgid "Domain name must not contain `+'\n" | ||
4987 | msgstr "" | ||
4988 | |||
4989 | #: src/namestore/gnunet-namestore-fcfsd.c:974 | ||
4990 | msgid "No ego configured for `fcfsd` subsystem\n" | ||
4991 | msgstr "" | ||
4992 | |||
4993 | #: src/namestore/gnunet-namestore-fcfsd.c:1000 | ||
4994 | #, fuzzy | ||
4995 | msgid "Failed to start HTTP server\n" | ||
4996 | msgstr "初始化“%s”服务失败。\n" | ||
4997 | |||
4998 | #: src/namestore/gnunet-namestore-fcfsd.c:1042 | ||
4999 | #, fuzzy | ||
5000 | msgid "Failed to connect to identity\n" | ||
5001 | msgstr "初始化“%s”服务失败。\n" | ||
5002 | |||
5003 | #: src/namestore/gnunet-namestore-fcfsd.c:1074 | ||
5004 | msgid "GNU Name System First Come First Serve name registration service" | ||
5005 | msgstr "" | ||
5006 | |||
5007 | #: src/namestore/gnunet-namestore.c:301 | 4804 | #: src/namestore/gnunet-namestore.c:301 |
5008 | #, c-format | 4805 | #, c-format |
5009 | msgid "Adding record failed: %s\n" | 4806 | msgid "Adding record failed: %s\n" |
5010 | msgstr "" | 4807 | msgstr "" |
5011 | 4808 | ||
5012 | #: src/namestore/gnunet-namestore.c:330 | 4809 | #: src/namestore/gnunet-namestore.c:330 |
5013 | #: src/namestore/plugin_rest_namestore.c:567 | 4810 | #: src/namestore/plugin_rest_namestore.c:562 |
5014 | #, c-format | 4811 | #, c-format |
5015 | msgid "Deleting record failed, record does not exist%s%s\n" | 4812 | msgid "Deleting record failed, record does not exist%s%s\n" |
5016 | msgstr "" | 4813 | msgstr "" |
5017 | 4814 | ||
5018 | #: src/namestore/gnunet-namestore.c:337 | 4815 | #: src/namestore/gnunet-namestore.c:337 |
5019 | #: src/namestore/plugin_rest_namestore.c:576 | 4816 | #: src/namestore/plugin_rest_namestore.c:571 |
5020 | #, c-format | 4817 | #, c-format |
5021 | msgid "Deleting record failed%s%s\n" | 4818 | msgid "Deleting record failed%s%s\n" |
5022 | msgstr "" | 4819 | msgstr "" |
@@ -5034,7 +4831,7 @@ msgid "Records already exist under `%s', cannot add `%s' record.\n" | |||
5034 | msgstr "" | 4831 | msgstr "" |
5035 | 4832 | ||
5036 | #: src/namestore/gnunet-namestore.c:698 | 4833 | #: src/namestore/gnunet-namestore.c:698 |
5037 | #: src/namestore/plugin_rest_namestore.c:602 | 4834 | #: src/namestore/plugin_rest_namestore.c:597 |
5038 | #, c-format | 4835 | #, c-format |
5039 | msgid "There are no records under label `%s' that could be deleted.\n" | 4836 | msgid "There are no records under label `%s' that could be deleted.\n" |
5040 | msgstr "" | 4837 | msgstr "" |
@@ -5045,11 +4842,24 @@ msgid "" | |||
5045 | "There are no records under label `%s' that match the request for deletion.\n" | 4842 | "There are no records under label `%s' that match the request for deletion.\n" |
5046 | msgstr "" | 4843 | msgstr "" |
5047 | 4844 | ||
4845 | #: src/namestore/gnunet-namestore.c:776 | ||
4846 | #: src/namestore/plugin_rest_namestore.c:1004 | ||
4847 | #, c-format | ||
4848 | msgid "Ego `%s' not known to identity service\n" | ||
4849 | msgstr "" | ||
4850 | |||
5048 | #: src/namestore/gnunet-namestore.c:791 | 4851 | #: src/namestore/gnunet-namestore.c:791 |
5049 | #, c-format | 4852 | #, c-format |
5050 | msgid "No options given\n" | 4853 | msgid "No options given\n" |
5051 | msgstr "" | 4854 | msgstr "" |
5052 | 4855 | ||
4856 | #: src/namestore/gnunet-namestore.c:802 | ||
4857 | #: src/namestore/gnunet-namestore-fcfsd.c:1034 | ||
4858 | #: src/namestore/plugin_rest_namestore.c:1017 | ||
4859 | #, fuzzy | ||
4860 | msgid "Failed to connect to namestore\n" | ||
4861 | msgstr "初始化“%s”服务失败。\n" | ||
4862 | |||
5053 | #: src/namestore/gnunet-namestore.c:810 src/namestore/gnunet-namestore.c:819 | 4863 | #: src/namestore/gnunet-namestore.c:810 src/namestore/gnunet-namestore.c:819 |
5054 | #: src/namestore/gnunet-namestore.c:838 src/namestore/gnunet-namestore.c:861 | 4864 | #: src/namestore/gnunet-namestore.c:838 src/namestore/gnunet-namestore.c:861 |
5055 | #: src/namestore/gnunet-namestore.c:915 | 4865 | #: src/namestore/gnunet-namestore.c:915 |
@@ -5063,14 +4873,14 @@ msgid "add" | |||
5063 | msgstr "" | 4873 | msgstr "" |
5064 | 4874 | ||
5065 | #: src/namestore/gnunet-namestore.c:829 | 4875 | #: src/namestore/gnunet-namestore.c:829 |
5066 | #: src/namestore/plugin_rest_namestore.c:676 | 4876 | #: src/namestore/plugin_rest_namestore.c:671 |
5067 | #, fuzzy, c-format | 4877 | #, fuzzy, c-format |
5068 | msgid "Unsupported type `%s'\n" | 4878 | msgid "Unsupported type `%s'\n" |
5069 | msgstr "未知的命令“%s”。\n" | 4879 | msgstr "未知的命令“%s”。\n" |
5070 | 4880 | ||
5071 | #: src/namestore/gnunet-namestore.c:851 | 4881 | #: src/namestore/gnunet-namestore.c:851 |
5072 | #: src/namestore/plugin_rest_namestore.c:694 | 4882 | #: src/namestore/plugin_rest_namestore.c:689 |
5073 | #: src/namestore/plugin_rest_namestore.c:734 | 4883 | #: src/namestore/plugin_rest_namestore.c:729 |
5074 | #, c-format | 4884 | #, c-format |
5075 | msgid "Value `%s' invalid for record type `%s'\n" | 4885 | msgid "Value `%s' invalid for record type `%s'\n" |
5076 | msgstr "" | 4886 | msgstr "" |
@@ -5100,13 +4910,13 @@ msgid "Invalid nick `%s'\n" | |||
5100 | msgstr "无效条目。\n" | 4910 | msgstr "无效条目。\n" |
5101 | 4911 | ||
5102 | #: src/namestore/gnunet-namestore.c:1051 | 4912 | #: src/namestore/gnunet-namestore.c:1051 |
5103 | #: src/namestore/plugin_rest_namestore.c:1052 | 4913 | #: src/namestore/plugin_rest_namestore.c:1047 |
5104 | #, c-format | 4914 | #, c-format |
5105 | msgid "No default ego configured in identity service\n" | 4915 | msgid "No default ego configured in identity service\n" |
5106 | msgstr "" | 4916 | msgstr "" |
5107 | 4917 | ||
5108 | #: src/namestore/gnunet-namestore.c:1108 | 4918 | #: src/namestore/gnunet-namestore.c:1108 |
5109 | #: src/namestore/plugin_rest_namestore.c:1148 | 4919 | #: src/namestore/plugin_rest_namestore.c:1143 |
5110 | #, fuzzy, c-format | 4920 | #, fuzzy, c-format |
5111 | msgid "Cannot connect to identity service\n" | 4921 | msgid "Cannot connect to identity service\n" |
5112 | msgstr "无法连接到 %s:%u:%s\n" | 4922 | msgstr "无法连接到 %s:%u:%s\n" |
@@ -5169,6 +4979,66 @@ msgstr "" | |||
5169 | msgid "name of the ego controlling the zone" | 4979 | msgid "name of the ego controlling the zone" |
5170 | msgstr "" | 4980 | msgstr "" |
5171 | 4981 | ||
4982 | #: src/namestore/gnunet-namestore-fcfsd.c:508 | ||
4983 | #, fuzzy, c-format | ||
4984 | msgid "Unsupported form value `%s'\n" | ||
4985 | msgstr "未知的命令“%s”。\n" | ||
4986 | |||
4987 | #: src/namestore/gnunet-namestore-fcfsd.c:535 | ||
4988 | #, fuzzy, c-format | ||
4989 | msgid "Failed to create record for domain `%s': %s\n" | ||
4990 | msgstr "解析配置文件“%s”失败\n" | ||
4991 | |||
4992 | #: src/namestore/gnunet-namestore-fcfsd.c:555 | ||
4993 | msgid "Error when mapping zone to name\n" | ||
4994 | msgstr "" | ||
4995 | |||
4996 | #: src/namestore/gnunet-namestore-fcfsd.c:585 | ||
4997 | #, c-format | ||
4998 | msgid "Found existing name `%s' for the given key\n" | ||
4999 | msgstr "" | ||
5000 | |||
5001 | #: src/namestore/gnunet-namestore-fcfsd.c:662 | ||
5002 | #, c-format | ||
5003 | msgid "Found %u existing records for domain `%s'\n" | ||
5004 | msgstr "" | ||
5005 | |||
5006 | #: src/namestore/gnunet-namestore-fcfsd.c:718 | ||
5007 | #, fuzzy, c-format | ||
5008 | msgid "Failed to create page for `%s'\n" | ||
5009 | msgstr "发送消息失败。\n" | ||
5010 | |||
5011 | #: src/namestore/gnunet-namestore-fcfsd.c:734 | ||
5012 | #, fuzzy, c-format | ||
5013 | msgid "Failed to setup post processor for `%s'\n" | ||
5014 | msgstr "解析配置文件“%s”失败\n" | ||
5015 | |||
5016 | #: src/namestore/gnunet-namestore-fcfsd.c:770 | ||
5017 | msgid "Domain name must not contain `.'\n" | ||
5018 | msgstr "" | ||
5019 | |||
5020 | #: src/namestore/gnunet-namestore-fcfsd.c:778 | ||
5021 | msgid "Domain name must not contain `+'\n" | ||
5022 | msgstr "" | ||
5023 | |||
5024 | #: src/namestore/gnunet-namestore-fcfsd.c:974 | ||
5025 | msgid "No ego configured for `fcfsd` subsystem\n" | ||
5026 | msgstr "" | ||
5027 | |||
5028 | #: src/namestore/gnunet-namestore-fcfsd.c:1000 | ||
5029 | #, fuzzy | ||
5030 | msgid "Failed to start HTTP server\n" | ||
5031 | msgstr "初始化“%s”服务失败。\n" | ||
5032 | |||
5033 | #: src/namestore/gnunet-namestore-fcfsd.c:1042 | ||
5034 | #, fuzzy | ||
5035 | msgid "Failed to connect to identity\n" | ||
5036 | msgstr "初始化“%s”服务失败。\n" | ||
5037 | |||
5038 | #: src/namestore/gnunet-namestore-fcfsd.c:1074 | ||
5039 | msgid "GNU Name System First Come First Serve name registration service" | ||
5040 | msgstr "" | ||
5041 | |||
5172 | #: src/namestore/gnunet-service-namestore.c:615 | 5042 | #: src/namestore/gnunet-service-namestore.c:615 |
5173 | #, fuzzy, c-format | 5043 | #, fuzzy, c-format |
5174 | msgid "Failed to replicate block in namecache: %s\n" | 5044 | msgid "Failed to replicate block in namecache: %s\n" |
@@ -5183,7 +5053,7 @@ msgstr "" | |||
5183 | msgid "flat file database running\n" | 5053 | msgid "flat file database running\n" |
5184 | msgstr "sqlite 数据仓库" | 5054 | msgstr "sqlite 数据仓库" |
5185 | 5055 | ||
5186 | #: src/namestore/plugin_rest_namestore.c:1193 | 5056 | #: src/namestore/plugin_rest_namestore.c:1188 |
5187 | msgid "Namestore REST API initialized\n" | 5057 | msgid "Namestore REST API initialized\n" |
5188 | msgstr "" | 5058 | msgstr "" |
5189 | 5059 | ||
@@ -5466,6 +5336,10 @@ msgstr "" | |||
5466 | msgid "`upnpc' command not found\n" | 5336 | msgid "`upnpc' command not found\n" |
5467 | msgstr "" | 5337 | msgstr "" |
5468 | 5338 | ||
5339 | #: src/nse/gnunet-nse.c:122 | ||
5340 | msgid "Show network size estimates from NSE service." | ||
5341 | msgstr "" | ||
5342 | |||
5469 | #: src/nse/gnunet-nse-profiler.c:842 | 5343 | #: src/nse/gnunet-nse-profiler.c:842 |
5470 | msgid "limit to the number of connections to NSE services, 0 for none" | 5344 | msgid "limit to the number of connections to NSE services, 0 for none" |
5471 | msgstr "" | 5345 | msgstr "" |
@@ -5491,16 +5365,66 @@ msgstr "" | |||
5491 | msgid "Measure quality and performance of the NSE service." | 5365 | msgid "Measure quality and performance of the NSE service." |
5492 | msgstr "无法访问该服务" | 5366 | msgstr "无法访问该服务" |
5493 | 5367 | ||
5494 | #: src/nse/gnunet-nse.c:122 | ||
5495 | msgid "Show network size estimates from NSE service." | ||
5496 | msgstr "" | ||
5497 | |||
5498 | #: src/nse/gnunet-service-nse.c:1534 | 5368 | #: src/nse/gnunet-service-nse.c:1534 |
5499 | #: src/revocation/gnunet-service-revocation.c:838 src/util/gnunet-scrypt.c:276 | 5369 | #: src/revocation/gnunet-service-revocation.c:840 src/util/gnunet-scrypt.c:276 |
5500 | #, fuzzy | 5370 | #, fuzzy |
5501 | msgid "Value is too large.\n" | 5371 | msgid "Value is too large.\n" |
5502 | msgstr "值不在合法范围内。" | 5372 | msgstr "值不在合法范围内。" |
5503 | 5373 | ||
5374 | #: src/peerinfo/gnunet-service-peerinfo.c:178 | ||
5375 | #, c-format | ||
5376 | msgid "Removing expired address of transport `%s'\n" | ||
5377 | msgstr "" | ||
5378 | |||
5379 | #: src/peerinfo/gnunet-service-peerinfo.c:310 | ||
5380 | #, fuzzy, c-format | ||
5381 | msgid "Failed to parse HELLO in file `%s': %s\n" | ||
5382 | msgstr "解析配置文件“%s”失败\n" | ||
5383 | |||
5384 | #: src/peerinfo/gnunet-service-peerinfo.c:331 | ||
5385 | #: src/peerinfo/gnunet-service-peerinfo.c:362 | ||
5386 | #, fuzzy, c-format | ||
5387 | msgid "Failed to parse HELLO in file `%s'\n" | ||
5388 | msgstr "解析配置文件“%s”失败\n" | ||
5389 | |||
5390 | #: src/peerinfo/gnunet-service-peerinfo.c:446 | ||
5391 | msgid "# peers known" | ||
5392 | msgstr "" | ||
5393 | |||
5394 | #: src/peerinfo/gnunet-service-peerinfo.c:489 | ||
5395 | #, c-format | ||
5396 | msgid "" | ||
5397 | "File `%s' in directory `%s' does not match naming convention. Removed.\n" | ||
5398 | msgstr "" | ||
5399 | |||
5400 | #: src/peerinfo/gnunet-service-peerinfo.c:655 | ||
5401 | #, fuzzy, c-format | ||
5402 | msgid "Scanning directory `%s'\n" | ||
5403 | msgstr "解析配置文件“%s”失败\n" | ||
5404 | |||
5405 | #: src/peerinfo/gnunet-service-peerinfo.c:663 | ||
5406 | #, c-format | ||
5407 | msgid "Still no peers found in `%s'!\n" | ||
5408 | msgstr "" | ||
5409 | |||
5410 | #: src/peerinfo/gnunet-service-peerinfo.c:1080 | ||
5411 | #, fuzzy, c-format | ||
5412 | msgid "Cleaning up directory `%s'\n" | ||
5413 | msgstr "解析配置文件“%s”失败\n" | ||
5414 | |||
5415 | #: src/peerinfo/gnunet-service-peerinfo.c:1409 | ||
5416 | #, c-format | ||
5417 | msgid "Importing HELLOs from `%s'\n" | ||
5418 | msgstr "" | ||
5419 | |||
5420 | #: src/peerinfo/gnunet-service-peerinfo.c:1422 | ||
5421 | msgid "Skipping import of included HELLOs\n" | ||
5422 | msgstr "" | ||
5423 | |||
5424 | #: src/peerinfo/peerinfo_api.c:220 | ||
5425 | msgid "Failed to receive response from `PEERINFO' service." | ||
5426 | msgstr "" | ||
5427 | |||
5504 | #: src/peerinfo-tool/gnunet-peerinfo.c:239 | 5428 | #: src/peerinfo-tool/gnunet-peerinfo.c:239 |
5505 | #, fuzzy, c-format | 5429 | #, fuzzy, c-format |
5506 | msgid "%sPeer `%s'\n" | 5430 | msgid "%sPeer `%s'\n" |
@@ -5592,60 +5516,6 @@ msgstr "" | |||
5592 | msgid "Failed to load transport plugin for `%s'\n" | 5516 | msgid "Failed to load transport plugin for `%s'\n" |
5593 | msgstr "解析配置文件“%s”失败\n" | 5517 | msgstr "解析配置文件“%s”失败\n" |
5594 | 5518 | ||
5595 | #: src/peerinfo/gnunet-service-peerinfo.c:178 | ||
5596 | #, c-format | ||
5597 | msgid "Removing expired address of transport `%s'\n" | ||
5598 | msgstr "" | ||
5599 | |||
5600 | #: src/peerinfo/gnunet-service-peerinfo.c:310 | ||
5601 | #, fuzzy, c-format | ||
5602 | msgid "Failed to parse HELLO in file `%s': %s\n" | ||
5603 | msgstr "解析配置文件“%s”失败\n" | ||
5604 | |||
5605 | #: src/peerinfo/gnunet-service-peerinfo.c:331 | ||
5606 | #: src/peerinfo/gnunet-service-peerinfo.c:362 | ||
5607 | #, fuzzy, c-format | ||
5608 | msgid "Failed to parse HELLO in file `%s'\n" | ||
5609 | msgstr "解析配置文件“%s”失败\n" | ||
5610 | |||
5611 | #: src/peerinfo/gnunet-service-peerinfo.c:446 | ||
5612 | msgid "# peers known" | ||
5613 | msgstr "" | ||
5614 | |||
5615 | #: src/peerinfo/gnunet-service-peerinfo.c:489 | ||
5616 | #, c-format | ||
5617 | msgid "" | ||
5618 | "File `%s' in directory `%s' does not match naming convention. Removed.\n" | ||
5619 | msgstr "" | ||
5620 | |||
5621 | #: src/peerinfo/gnunet-service-peerinfo.c:655 | ||
5622 | #, fuzzy, c-format | ||
5623 | msgid "Scanning directory `%s'\n" | ||
5624 | msgstr "解析配置文件“%s”失败\n" | ||
5625 | |||
5626 | #: src/peerinfo/gnunet-service-peerinfo.c:663 | ||
5627 | #, c-format | ||
5628 | msgid "Still no peers found in `%s'!\n" | ||
5629 | msgstr "" | ||
5630 | |||
5631 | #: src/peerinfo/gnunet-service-peerinfo.c:1076 | ||
5632 | #, fuzzy, c-format | ||
5633 | msgid "Cleaning up directory `%s'\n" | ||
5634 | msgstr "解析配置文件“%s”失败\n" | ||
5635 | |||
5636 | #: src/peerinfo/gnunet-service-peerinfo.c:1405 | ||
5637 | #, c-format | ||
5638 | msgid "Importing HELLOs from `%s'\n" | ||
5639 | msgstr "" | ||
5640 | |||
5641 | #: src/peerinfo/gnunet-service-peerinfo.c:1418 | ||
5642 | msgid "Skipping import of included HELLOs\n" | ||
5643 | msgstr "" | ||
5644 | |||
5645 | #: src/peerinfo/peerinfo_api.c:220 | ||
5646 | msgid "Failed to receive response from `PEERINFO' service." | ||
5647 | msgstr "" | ||
5648 | |||
5649 | #: src/peerstore/gnunet-peerstore.c:91 | 5519 | #: src/peerstore/gnunet-peerstore.c:91 |
5650 | msgid "peerstore" | 5520 | msgid "peerstore" |
5651 | msgstr "" | 5521 | msgstr "" |
@@ -6085,12 +5955,12 @@ msgstr "" | |||
6085 | msgid "# revocation set unions completed" | 5955 | msgid "# revocation set unions completed" |
6086 | msgstr "" | 5956 | msgstr "" |
6087 | 5957 | ||
6088 | #: src/revocation/gnunet-service-revocation.c:524 | 5958 | #: src/revocation/gnunet-service-revocation.c:525 |
6089 | #: src/revocation/gnunet-service-revocation.c:771 | 5959 | #: src/revocation/gnunet-service-revocation.c:773 |
6090 | msgid "SET service crashed, terminating revocation service\n" | 5960 | msgid "SET service crashed, terminating revocation service\n" |
6091 | msgstr "" | 5961 | msgstr "" |
6092 | 5962 | ||
6093 | #: src/revocation/gnunet-service-revocation.c:862 | 5963 | #: src/revocation/gnunet-service-revocation.c:864 |
6094 | #, fuzzy | 5964 | #, fuzzy |
6095 | msgid "Could not open revocation database file!" | 5965 | msgid "Could not open revocation database file!" |
6096 | msgstr "无法连接到 %s:%u:%s\n" | 5966 | msgstr "无法连接到 %s:%u:%s\n" |
@@ -6154,10 +6024,10 @@ msgstr "" | |||
6154 | msgid "Calculate the Vectorproduct with a GNUnet peer." | 6024 | msgid "Calculate the Vectorproduct with a GNUnet peer." |
6155 | msgstr "" | 6025 | msgstr "" |
6156 | 6026 | ||
6157 | #: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1172 | ||
6158 | #: src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c:1063 | ||
6159 | #: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1401 | 6027 | #: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1401 |
6160 | #: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1345 | 6028 | #: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1345 |
6029 | #: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1172 | ||
6030 | #: src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c:1063 | ||
6161 | #, fuzzy | 6031 | #, fuzzy |
6162 | msgid "Connect to CADET failed\n" | 6032 | msgid "Connect to CADET failed\n" |
6163 | msgstr "“%s”已连接到“%s”。\n" | 6033 | msgstr "“%s”已连接到“%s”。\n" |
@@ -6374,7 +6244,7 @@ msgstr "解析配置文件“%s”失败\n" | |||
6374 | msgid "Wrote %llu bytes of statistics to `%s'\n" | 6244 | msgid "Wrote %llu bytes of statistics to `%s'\n" |
6375 | msgstr "" | 6245 | msgstr "" |
6376 | 6246 | ||
6377 | #: src/statistics/gnunet-service-statistics.c:1084 | 6247 | #: src/statistics/gnunet-service-statistics.c:1086 |
6378 | #, c-format | 6248 | #, c-format |
6379 | msgid "Loading %llu bytes of statistics from `%s'\n" | 6249 | msgid "Loading %llu bytes of statistics from `%s'\n" |
6380 | msgstr "" | 6250 | msgstr "" |
@@ -6503,7 +6373,7 @@ msgid "Invalid argument `%s'; expecting unsigned int\n" | |||
6503 | msgstr "“%s”的参数无效。\n" | 6373 | msgstr "“%s”的参数无效。\n" |
6504 | 6374 | ||
6505 | #: src/testbed/generate-underlay-topology.c:342 | 6375 | #: src/testbed/generate-underlay-topology.c:342 |
6506 | #: src/testbed/gnunet-testbed-profiler.c:284 | 6376 | #: src/testbed/gnunet-testbed-profiler.c:283 |
6507 | msgid "create COUNT number of peers" | 6377 | msgid "create COUNT number of peers" |
6508 | msgstr "" | 6378 | msgstr "" |
6509 | 6379 | ||
@@ -6541,13 +6411,13 @@ msgid "" | |||
6541 | "deployments" | 6411 | "deployments" |
6542 | msgstr "" | 6412 | msgstr "" |
6543 | 6413 | ||
6544 | #: src/testbed/gnunet-daemon-testbed-underlay.c:231 src/testing/list-keys.c:46 | 6414 | #: src/testbed/gnunet-daemon-testbed-underlay.c:233 src/testing/list-keys.c:46 |
6545 | #: src/testing/testing.c:288 src/util/gnunet-ecc.c:301 | 6415 | #: src/testing/testing.c:288 src/util/gnunet-ecc.c:306 |
6546 | #, c-format | 6416 | #, c-format |
6547 | msgid "Incorrect hostkey file format: %s\n" | 6417 | msgid "Incorrect hostkey file format: %s\n" |
6548 | msgstr "" | 6418 | msgstr "" |
6549 | 6419 | ||
6550 | #: src/testbed/gnunet-daemon-testbed-underlay.c:469 | 6420 | #: src/testbed/gnunet-daemon-testbed-underlay.c:471 |
6551 | msgid "Daemon to restrict underlay network in testbed deployments" | 6421 | msgid "Daemon to restrict underlay network in testbed deployments" |
6552 | msgstr "" | 6422 | msgstr "" |
6553 | 6423 | ||
@@ -6612,17 +6482,6 @@ msgstr "" | |||
6612 | msgid "%.s Unknown result code." | 6482 | msgid "%.s Unknown result code." |
6613 | msgstr "" | 6483 | msgstr "" |
6614 | 6484 | ||
6615 | #: src/testbed/gnunet-testbed-profiler.c:290 | ||
6616 | msgid "tolerate COUNT number of continious timeout failures" | ||
6617 | msgstr "" | ||
6618 | |||
6619 | #: src/testbed/gnunet-testbed-profiler.c:295 | ||
6620 | msgid "" | ||
6621 | "run profiler in non-interactive mode where upon testbed setup the profiler " | ||
6622 | "does not wait for a keystroke but continues to run until a termination " | ||
6623 | "signal is received" | ||
6624 | msgstr "" | ||
6625 | |||
6626 | #: src/testbed/gnunet_testbed_mpi_spawn.c:118 | 6485 | #: src/testbed/gnunet_testbed_mpi_spawn.c:118 |
6627 | msgid "Waiting for child to exit.\n" | 6486 | msgid "Waiting for child to exit.\n" |
6628 | msgstr "" | 6487 | msgstr "" |
@@ -6632,6 +6491,17 @@ msgstr "" | |||
6632 | msgid "Spawning process `%s'\n" | 6491 | msgid "Spawning process `%s'\n" |
6633 | msgstr "卸载 GNUnet 服务" | 6492 | msgstr "卸载 GNUnet 服务" |
6634 | 6493 | ||
6494 | #: src/testbed/gnunet-testbed-profiler.c:289 | ||
6495 | msgid "tolerate COUNT number of continious timeout failures" | ||
6496 | msgstr "" | ||
6497 | |||
6498 | #: src/testbed/gnunet-testbed-profiler.c:294 | ||
6499 | msgid "" | ||
6500 | "run profiler in non-interactive mode where upon testbed setup the profiler " | ||
6501 | "does not wait for a keystroke but continues to run until a termination " | ||
6502 | "signal is received" | ||
6503 | msgstr "" | ||
6504 | |||
6635 | #: src/testbed/testbed_api.c:410 | 6505 | #: src/testbed/testbed_api.c:410 |
6636 | #, fuzzy, c-format | 6506 | #, fuzzy, c-format |
6637 | msgid "Adding host %u failed with error: %s\n" | 6507 | msgid "Adding host %u failed with error: %s\n" |
@@ -6928,55 +6798,55 @@ msgstr "" | |||
6928 | msgid "GNUnet topology control" | 6798 | msgid "GNUnet topology control" |
6929 | msgstr "" | 6799 | msgstr "" |
6930 | 6800 | ||
6801 | #: src/transport/gnunet-service-transport_ats.c:141 | ||
6802 | msgid "# Addresses given to ATS" | ||
6803 | msgstr "" | ||
6804 | |||
6931 | #: src/transport/gnunet-service-transport.c:448 | 6805 | #: src/transport/gnunet-service-transport.c:448 |
6932 | msgid "# messages dropped due to slow client" | 6806 | msgid "# messages dropped due to slow client" |
6933 | msgstr "" | 6807 | msgstr "" |
6934 | 6808 | ||
6935 | #: src/transport/gnunet-service-transport.c:809 | 6809 | #: src/transport/gnunet-service-transport.c:818 |
6936 | msgid "# bytes payload dropped (other peer was not connected)" | 6810 | msgid "# bytes payload dropped (other peer was not connected)" |
6937 | msgstr "" | 6811 | msgstr "" |
6938 | 6812 | ||
6939 | #: src/transport/gnunet-service-transport.c:1539 | 6813 | #: src/transport/gnunet-service-transport.c:1551 |
6940 | msgid "# bytes payload discarded due to not connected peer" | 6814 | msgid "# bytes payload discarded due to not connected peer" |
6941 | msgstr "" | 6815 | msgstr "" |
6942 | 6816 | ||
6943 | #: src/transport/gnunet-service-transport.c:1699 | 6817 | #: src/transport/gnunet-service-transport.c:1711 |
6944 | msgid "# bytes total received" | 6818 | msgid "# bytes total received" |
6945 | msgstr "" | 6819 | msgstr "" |
6946 | 6820 | ||
6947 | #: src/transport/gnunet-service-transport.c:1796 | 6821 | #: src/transport/gnunet-service-transport.c:1808 |
6948 | msgid "# bytes payload received" | 6822 | msgid "# bytes payload received" |
6949 | msgstr "" | 6823 | msgstr "" |
6950 | 6824 | ||
6951 | #: src/transport/gnunet-service-transport.c:2113 | 6825 | #: src/transport/gnunet-service-transport.c:2125 |
6952 | #: src/transport/gnunet-service-transport.c:2585 | 6826 | #: src/transport/gnunet-service-transport.c:2597 |
6953 | msgid "# disconnects due to blacklist" | 6827 | msgid "# disconnects due to blacklist" |
6954 | msgstr "" | 6828 | msgstr "" |
6955 | 6829 | ||
6956 | #: src/transport/gnunet-service-transport.c:2589 | 6830 | #: src/transport/gnunet-service-transport.c:2601 |
6957 | #, fuzzy, c-format | 6831 | #, fuzzy, c-format |
6958 | msgid "Disallowing connection to peer `%s' on transport %s\n" | 6832 | msgid "Disallowing connection to peer `%s' on transport %s\n" |
6959 | msgstr "解析配置文件“%s”失败\n" | 6833 | msgstr "解析配置文件“%s”失败\n" |
6960 | 6834 | ||
6961 | #: src/transport/gnunet-service-transport.c:2697 | 6835 | #: src/transport/gnunet-service-transport.c:2709 |
6962 | #, fuzzy, c-format | 6836 | #, fuzzy, c-format |
6963 | msgid "Adding blacklisting entry for peer `%s'\n" | 6837 | msgid "Adding blacklisting entry for peer `%s'\n" |
6964 | msgstr "卸载 GNUnet 服务" | 6838 | msgstr "卸载 GNUnet 服务" |
6965 | 6839 | ||
6966 | #: src/transport/gnunet-service-transport.c:2706 | 6840 | #: src/transport/gnunet-service-transport.c:2718 |
6967 | #, c-format | 6841 | #, c-format |
6968 | msgid "Adding blacklisting entry for peer `%s':`%s'\n" | 6842 | msgid "Adding blacklisting entry for peer `%s':`%s'\n" |
6969 | msgstr "" | 6843 | msgstr "" |
6970 | 6844 | ||
6971 | #: src/transport/gnunet-service-transport.c:2771 | 6845 | #: src/transport/gnunet-service-transport.c:2783 |
6972 | #, fuzzy | 6846 | #, fuzzy |
6973 | msgid "Transport service is lacking key configuration settings. Exiting.\n" | 6847 | msgid "Transport service is lacking key configuration settings. Exiting.\n" |
6974 | msgstr "立即保存配置?" | 6848 | msgstr "立即保存配置?" |
6975 | 6849 | ||
6976 | #: src/transport/gnunet-service-transport_ats.c:141 | ||
6977 | msgid "# Addresses given to ATS" | ||
6978 | msgstr "" | ||
6979 | |||
6980 | #: src/transport/gnunet-service-transport_hello.c:195 | 6850 | #: src/transport/gnunet-service-transport_hello.c:195 |
6981 | msgid "# refreshed my HELLO" | 6851 | msgid "# refreshed my HELLO" |
6982 | msgstr "" | 6852 | msgstr "" |
@@ -7110,64 +6980,64 @@ msgstr "" | |||
7110 | msgid "SYN request from peer `%s' ignored due impending shutdown\n" | 6980 | msgid "SYN request from peer `%s' ignored due impending shutdown\n" |
7111 | msgstr "" | 6981 | msgstr "" |
7112 | 6982 | ||
7113 | #: src/transport/gnunet-service-transport_neighbours.c:2620 | 6983 | #: src/transport/gnunet-service-transport_neighbours.c:2623 |
7114 | msgid "# Attempts to switch addresses" | 6984 | msgid "# Attempts to switch addresses" |
7115 | msgstr "" | 6985 | msgstr "" |
7116 | 6986 | ||
7117 | #: src/transport/gnunet-service-transport_neighbours.c:3102 | 6987 | #: src/transport/gnunet-service-transport_neighbours.c:3105 |
7118 | msgid "# SYN_ACK messages received" | 6988 | msgid "# SYN_ACK messages received" |
7119 | msgstr "" | 6989 | msgstr "" |
7120 | 6990 | ||
7121 | #: src/transport/gnunet-service-transport_neighbours.c:3110 | 6991 | #: src/transport/gnunet-service-transport_neighbours.c:3113 |
7122 | msgid "# unexpected SYN_ACK messages (no peer)" | 6992 | msgid "# unexpected SYN_ACK messages (no peer)" |
7123 | msgstr "" | 6993 | msgstr "" |
7124 | 6994 | ||
7125 | #: src/transport/gnunet-service-transport_neighbours.c:3128 | 6995 | #: src/transport/gnunet-service-transport_neighbours.c:3131 |
7126 | #: src/transport/gnunet-service-transport_neighbours.c:3152 | 6996 | #: src/transport/gnunet-service-transport_neighbours.c:3155 |
7127 | msgid "# unexpected SYN_ACK messages (not ready)" | 6997 | msgid "# unexpected SYN_ACK messages (not ready)" |
7128 | msgstr "" | 6998 | msgstr "" |
7129 | 6999 | ||
7130 | #: src/transport/gnunet-service-transport_neighbours.c:3164 | 7000 | #: src/transport/gnunet-service-transport_neighbours.c:3167 |
7131 | msgid "# unexpected SYN_ACK messages (waiting on ATS)" | 7001 | msgid "# unexpected SYN_ACK messages (waiting on ATS)" |
7132 | msgstr "" | 7002 | msgstr "" |
7133 | 7003 | ||
7134 | #: src/transport/gnunet-service-transport_neighbours.c:3189 | 7004 | #: src/transport/gnunet-service-transport_neighbours.c:3192 |
7135 | msgid "# Successful attempts to switch addresses" | 7005 | msgid "# Successful attempts to switch addresses" |
7136 | msgstr "" | 7006 | msgstr "" |
7137 | 7007 | ||
7138 | #: src/transport/gnunet-service-transport_neighbours.c:3202 | 7008 | #: src/transport/gnunet-service-transport_neighbours.c:3205 |
7139 | msgid "# unexpected SYN_ACK messages (disconnecting)" | 7009 | msgid "# unexpected SYN_ACK messages (disconnecting)" |
7140 | msgstr "" | 7010 | msgstr "" |
7141 | 7011 | ||
7142 | #: src/transport/gnunet-service-transport_neighbours.c:3374 | 7012 | #: src/transport/gnunet-service-transport_neighbours.c:3377 |
7143 | msgid "# ACK messages received" | 7013 | msgid "# ACK messages received" |
7144 | msgstr "" | 7014 | msgstr "" |
7145 | 7015 | ||
7146 | #: src/transport/gnunet-service-transport_neighbours.c:3410 | 7016 | #: src/transport/gnunet-service-transport_neighbours.c:3413 |
7147 | msgid "# unexpected ACK messages" | 7017 | msgid "# unexpected ACK messages" |
7148 | msgstr "" | 7018 | msgstr "" |
7149 | 7019 | ||
7150 | #: src/transport/gnunet-service-transport_neighbours.c:3498 | 7020 | #: src/transport/gnunet-service-transport_neighbours.c:3501 |
7151 | msgid "# quota messages ignored (malformed)" | 7021 | msgid "# quota messages ignored (malformed)" |
7152 | msgstr "" | 7022 | msgstr "" |
7153 | 7023 | ||
7154 | #: src/transport/gnunet-service-transport_neighbours.c:3505 | 7024 | #: src/transport/gnunet-service-transport_neighbours.c:3508 |
7155 | msgid "# QUOTA messages received" | 7025 | msgid "# QUOTA messages received" |
7156 | msgstr "" | 7026 | msgstr "" |
7157 | 7027 | ||
7158 | #: src/transport/gnunet-service-transport_neighbours.c:3545 | 7028 | #: src/transport/gnunet-service-transport_neighbours.c:3548 |
7159 | msgid "# disconnect messages ignored (malformed)" | 7029 | msgid "# disconnect messages ignored (malformed)" |
7160 | msgstr "" | 7030 | msgstr "" |
7161 | 7031 | ||
7162 | #: src/transport/gnunet-service-transport_neighbours.c:3552 | 7032 | #: src/transport/gnunet-service-transport_neighbours.c:3555 |
7163 | msgid "# DISCONNECT messages received" | 7033 | msgid "# DISCONNECT messages received" |
7164 | msgstr "" | 7034 | msgstr "" |
7165 | 7035 | ||
7166 | #: src/transport/gnunet-service-transport_neighbours.c:3563 | 7036 | #: src/transport/gnunet-service-transport_neighbours.c:3566 |
7167 | msgid "# disconnect messages ignored (timestamp)" | 7037 | msgid "# disconnect messages ignored (timestamp)" |
7168 | msgstr "" | 7038 | msgstr "" |
7169 | 7039 | ||
7170 | #: src/transport/gnunet-service-transport_neighbours.c:3697 | 7040 | #: src/transport/gnunet-service-transport_neighbours.c:3700 |
7171 | msgid "# disconnected from peer upon explicit request" | 7041 | msgid "# disconnected from peer upon explicit request" |
7172 | msgstr "" | 7042 | msgstr "" |
7173 | 7043 | ||
@@ -7201,8 +7071,8 @@ msgstr "" | |||
7201 | 7071 | ||
7202 | #: src/transport/gnunet-service-transport_validation.c:491 | 7072 | #: src/transport/gnunet-service-transport_validation.c:491 |
7203 | #: src/transport/gnunet-service-transport_validation.c:677 | 7073 | #: src/transport/gnunet-service-transport_validation.c:677 |
7204 | #: src/transport/gnunet-service-transport_validation.c:988 | 7074 | #: src/transport/gnunet-service-transport_validation.c:997 |
7205 | #: src/transport/gnunet-service-transport_validation.c:1590 | 7075 | #: src/transport/gnunet-service-transport_validation.c:1609 |
7206 | #, fuzzy | 7076 | #, fuzzy |
7207 | msgid "# validations running" | 7077 | msgid "# validations running" |
7208 | msgstr "sqlite 数据仓库" | 7078 | msgstr "sqlite 数据仓库" |
@@ -7227,98 +7097,60 @@ msgstr "" | |||
7227 | msgid "# address revalidations started" | 7097 | msgid "# address revalidations started" |
7228 | msgstr "" | 7098 | msgstr "" |
7229 | 7099 | ||
7230 | #: src/transport/gnunet-service-transport_validation.c:1114 | 7100 | #: src/transport/gnunet-service-transport_validation.c:1123 |
7231 | msgid "# PING message for different peer received" | 7101 | msgid "# PING message for different peer received" |
7232 | msgstr "" | 7102 | msgstr "" |
7233 | 7103 | ||
7234 | #: src/transport/gnunet-service-transport_validation.c:1165 | 7104 | #: src/transport/gnunet-service-transport_validation.c:1174 |
7235 | #, c-format | 7105 | #, c-format |
7236 | msgid "Plugin `%s' not available, cannot confirm having this address\n" | 7106 | msgid "Plugin `%s' not available, cannot confirm having this address\n" |
7237 | msgstr "" | 7107 | msgstr "" |
7238 | 7108 | ||
7239 | #: src/transport/gnunet-service-transport_validation.c:1178 | 7109 | #: src/transport/gnunet-service-transport_validation.c:1187 |
7240 | msgid "# failed address checks during validation" | 7110 | msgid "# failed address checks during validation" |
7241 | msgstr "" | 7111 | msgstr "" |
7242 | 7112 | ||
7243 | #: src/transport/gnunet-service-transport_validation.c:1181 | 7113 | #: src/transport/gnunet-service-transport_validation.c:1190 |
7244 | #, c-format | 7114 | #, c-format |
7245 | msgid "Address `%s' is not one of my addresses, not confirming PING\n" | 7115 | msgid "Address `%s' is not one of my addresses, not confirming PING\n" |
7246 | msgstr "" | 7116 | msgstr "" |
7247 | 7117 | ||
7248 | #: src/transport/gnunet-service-transport_validation.c:1189 | 7118 | #: src/transport/gnunet-service-transport_validation.c:1198 |
7249 | msgid "# successful address checks during validation" | 7119 | msgid "# successful address checks during validation" |
7250 | msgstr "" | 7120 | msgstr "" |
7251 | 7121 | ||
7252 | #: src/transport/gnunet-service-transport_validation.c:1202 | 7122 | #: src/transport/gnunet-service-transport_validation.c:1211 |
7253 | #, c-format | 7123 | #, c-format |
7254 | msgid "" | 7124 | msgid "" |
7255 | "Not confirming PING from peer `%s' with address `%s' since I cannot confirm " | 7125 | "Not confirming PING from peer `%s' with address `%s' since I cannot confirm " |
7256 | "having this address.\n" | 7126 | "having this address.\n" |
7257 | msgstr "" | 7127 | msgstr "" |
7258 | 7128 | ||
7259 | #: src/transport/gnunet-service-transport_validation.c:1257 | 7129 | #: src/transport/gnunet-service-transport_validation.c:1266 |
7260 | #, fuzzy, c-format | 7130 | #, fuzzy, c-format |
7261 | msgid "Failed to create PONG signature for peer `%s'\n" | 7131 | msgid "Failed to create PONG signature for peer `%s'\n" |
7262 | msgstr "发送消息失败。\n" | 7132 | msgstr "发送消息失败。\n" |
7263 | 7133 | ||
7264 | #: src/transport/gnunet-service-transport_validation.c:1308 | 7134 | #: src/transport/gnunet-service-transport_validation.c:1317 |
7265 | msgid "# PONGs unicast via reliable transport" | 7135 | msgid "# PONGs unicast via reliable transport" |
7266 | msgstr "" | 7136 | msgstr "" |
7267 | 7137 | ||
7268 | #: src/transport/gnunet-service-transport_validation.c:1317 | 7138 | #: src/transport/gnunet-service-transport_validation.c:1326 |
7269 | msgid "# PONGs multicast to all available addresses" | 7139 | msgid "# PONGs multicast to all available addresses" |
7270 | msgstr "" | 7140 | msgstr "" |
7271 | 7141 | ||
7272 | #: src/transport/gnunet-service-transport_validation.c:1480 | 7142 | #: src/transport/gnunet-service-transport_validation.c:1499 |
7273 | msgid "# PONGs dropped, no matching pending validation" | 7143 | msgid "# PONGs dropped, no matching pending validation" |
7274 | msgstr "" | 7144 | msgstr "" |
7275 | 7145 | ||
7276 | #: src/transport/gnunet-service-transport_validation.c:1498 | 7146 | #: src/transport/gnunet-service-transport_validation.c:1517 |
7277 | msgid "# PONGs dropped, signature expired" | 7147 | msgid "# PONGs dropped, signature expired" |
7278 | msgstr "" | 7148 | msgstr "" |
7279 | 7149 | ||
7280 | #: src/transport/gnunet-service-transport_validation.c:1553 | 7150 | #: src/transport/gnunet-service-transport_validation.c:1572 |
7281 | msgid "# validations succeeded" | 7151 | msgid "# validations succeeded" |
7282 | msgstr "" | 7152 | msgstr "" |
7283 | 7153 | ||
7284 | #: src/transport/gnunet-transport-profiler.c:219 | ||
7285 | #, c-format | ||
7286 | msgid "%llu B in %llu ms == %.2f KB/s!\n" | ||
7287 | msgstr "" | ||
7288 | |||
7289 | #: src/transport/gnunet-transport-profiler.c:617 | ||
7290 | msgid "send data to peer" | ||
7291 | msgstr "" | ||
7292 | |||
7293 | #: src/transport/gnunet-transport-profiler.c:621 | ||
7294 | msgid "receive data from peer" | ||
7295 | msgstr "" | ||
7296 | |||
7297 | #: src/transport/gnunet-transport-profiler.c:626 | ||
7298 | msgid "iterations" | ||
7299 | msgstr "" | ||
7300 | |||
7301 | #: src/transport/gnunet-transport-profiler.c:631 | ||
7302 | #, fuzzy | ||
7303 | msgid "number of messages to send" | ||
7304 | msgstr "每次迭代所使用的消息数量" | ||
7305 | |||
7306 | #: src/transport/gnunet-transport-profiler.c:636 | ||
7307 | #, fuzzy | ||
7308 | msgid "message size to use" | ||
7309 | msgstr "消息尺寸" | ||
7310 | |||
7311 | #: src/transport/gnunet-transport-profiler.c:641 | ||
7312 | #: src/transport/gnunet-transport.c:1462 | ||
7313 | msgid "peer identity" | ||
7314 | msgstr "" | ||
7315 | |||
7316 | #: src/transport/gnunet-transport-profiler.c:652 | ||
7317 | #: src/transport/gnunet-transport.c:1482 | ||
7318 | #, fuzzy | ||
7319 | msgid "Direct access to transport service." | ||
7320 | msgstr "初始化“%s”服务失败。\n" | ||
7321 | |||
7322 | #: src/transport/gnunet-transport.c:413 | 7154 | #: src/transport/gnunet-transport.c:413 |
7323 | #, c-format | 7155 | #, c-format |
7324 | msgid "Transmitted %llu bytes/s (%llu bytes in %s)\n" | 7156 | msgid "Transmitted %llu bytes/s (%llu bytes in %s)\n" |
@@ -7455,6 +7287,11 @@ msgstr "" | |||
7455 | msgid "do not resolve hostnames" | 7287 | msgid "do not resolve hostnames" |
7456 | msgstr "" | 7288 | msgstr "" |
7457 | 7289 | ||
7290 | #: src/transport/gnunet-transport.c:1462 | ||
7291 | #: src/transport/gnunet-transport-profiler.c:641 | ||
7292 | msgid "peer identity" | ||
7293 | msgstr "" | ||
7294 | |||
7458 | #: src/transport/gnunet-transport.c:1466 | 7295 | #: src/transport/gnunet-transport.c:1466 |
7459 | msgid "monitor plugin sessions" | 7296 | msgid "monitor plugin sessions" |
7460 | msgstr "" | 7297 | msgstr "" |
@@ -7463,6 +7300,39 @@ msgstr "" | |||
7463 | msgid "send data for benchmarking to the other peer (until CTRL-C)" | 7300 | msgid "send data for benchmarking to the other peer (until CTRL-C)" |
7464 | msgstr "" | 7301 | msgstr "" |
7465 | 7302 | ||
7303 | #: src/transport/gnunet-transport.c:1482 | ||
7304 | #: src/transport/gnunet-transport-profiler.c:652 | ||
7305 | #, fuzzy | ||
7306 | msgid "Direct access to transport service." | ||
7307 | msgstr "初始化“%s”服务失败。\n" | ||
7308 | |||
7309 | #: src/transport/gnunet-transport-profiler.c:219 | ||
7310 | #, c-format | ||
7311 | msgid "%llu B in %llu ms == %.2f KB/s!\n" | ||
7312 | msgstr "" | ||
7313 | |||
7314 | #: src/transport/gnunet-transport-profiler.c:617 | ||
7315 | msgid "send data to peer" | ||
7316 | msgstr "" | ||
7317 | |||
7318 | #: src/transport/gnunet-transport-profiler.c:621 | ||
7319 | msgid "receive data from peer" | ||
7320 | msgstr "" | ||
7321 | |||
7322 | #: src/transport/gnunet-transport-profiler.c:626 | ||
7323 | msgid "iterations" | ||
7324 | msgstr "" | ||
7325 | |||
7326 | #: src/transport/gnunet-transport-profiler.c:631 | ||
7327 | #, fuzzy | ||
7328 | msgid "number of messages to send" | ||
7329 | msgstr "每次迭代所使用的消息数量" | ||
7330 | |||
7331 | #: src/transport/gnunet-transport-profiler.c:636 | ||
7332 | #, fuzzy | ||
7333 | msgid "message size to use" | ||
7334 | msgstr "消息尺寸" | ||
7335 | |||
7466 | #: src/transport/plugin_transport_http_client.c:1474 | 7336 | #: src/transport/plugin_transport_http_client.c:1474 |
7467 | #: src/transport/plugin_transport_http_server.c:2312 | 7337 | #: src/transport/plugin_transport_http_server.c:2312 |
7468 | #: src/transport/plugin_transport_http_server.c:3526 | 7338 | #: src/transport/plugin_transport_http_server.c:3526 |
@@ -7739,6 +7609,20 @@ msgstr "" | |||
7739 | msgid "TCP transport advertises itself as being on port %llu\n" | 7609 | msgid "TCP transport advertises itself as being on port %llu\n" |
7740 | msgstr "" | 7610 | msgstr "" |
7741 | 7611 | ||
7612 | #: src/transport/plugin_transport_udp_broadcasting.c:168 | ||
7613 | msgid "# Multicast HELLO beacons received via UDP" | ||
7614 | msgstr "" | ||
7615 | |||
7616 | #: src/transport/plugin_transport_udp_broadcasting.c:548 | ||
7617 | msgid "" | ||
7618 | "Disabling HELLO broadcasting due to friend-to-friend only configuration!\n" | ||
7619 | msgstr "" | ||
7620 | |||
7621 | #: src/transport/plugin_transport_udp_broadcasting.c:565 | ||
7622 | #, c-format | ||
7623 | msgid "Failed to set IPv4 broadcast option for broadcast socket on port %d\n" | ||
7624 | msgstr "" | ||
7625 | |||
7742 | #: src/transport/plugin_transport_udp.c:3366 | 7626 | #: src/transport/plugin_transport_udp.c:3366 |
7743 | #, c-format | 7627 | #, c-format |
7744 | msgid "" | 7628 | msgid "" |
@@ -7787,20 +7671,6 @@ msgstr "“%s”不可用。\n" | |||
7787 | msgid "Failed to create UDP network sockets\n" | 7671 | msgid "Failed to create UDP network sockets\n" |
7788 | msgstr "发送消息失败。\n" | 7672 | msgstr "发送消息失败。\n" |
7789 | 7673 | ||
7790 | #: src/transport/plugin_transport_udp_broadcasting.c:168 | ||
7791 | msgid "# Multicast HELLO beacons received via UDP" | ||
7792 | msgstr "" | ||
7793 | |||
7794 | #: src/transport/plugin_transport_udp_broadcasting.c:548 | ||
7795 | msgid "" | ||
7796 | "Disabling HELLO broadcasting due to friend-to-friend only configuration!\n" | ||
7797 | msgstr "" | ||
7798 | |||
7799 | #: src/transport/plugin_transport_udp_broadcasting.c:565 | ||
7800 | #, c-format | ||
7801 | msgid "Failed to set IPv4 broadcast option for broadcast socket on port %d\n" | ||
7802 | msgstr "" | ||
7803 | |||
7804 | #: src/transport/plugin_transport_unix.c:1403 | 7674 | #: src/transport/plugin_transport_unix.c:1403 |
7805 | #, fuzzy, c-format | 7675 | #, fuzzy, c-format |
7806 | msgid "Cannot create path to `%s'\n" | 7676 | msgid "Cannot create path to `%s'\n" |
@@ -7905,7 +7775,7 @@ msgid "" | |||
7905 | "`GNUNET_SERVER_receive_done' after %s\n" | 7775 | "`GNUNET_SERVER_receive_done' after %s\n" |
7906 | msgstr "" | 7776 | msgstr "" |
7907 | 7777 | ||
7908 | #: src/transport/tcp_service_legacy.c:339 src/util/service.c:2336 | 7778 | #: src/transport/tcp_service_legacy.c:339 src/util/service.c:2346 |
7909 | #, c-format | 7779 | #, c-format |
7910 | msgid "Unknown address family %d\n" | 7780 | msgid "Unknown address family %d\n" |
7911 | msgstr "" | 7781 | msgstr "" |
@@ -7981,19 +7851,19 @@ msgstr "无法更改用户/组为“%s”:%s\n" | |||
7981 | msgid "do daemonize (detach from terminal)" | 7851 | msgid "do daemonize (detach from terminal)" |
7982 | msgstr "" | 7852 | msgstr "" |
7983 | 7853 | ||
7984 | #: src/transport/tcp_service_legacy.c:1448 src/util/program.c:244 | 7854 | #: src/transport/tcp_service_legacy.c:1448 src/util/program.c:255 |
7985 | #: src/util/service.c:1790 | 7855 | #: src/util/service.c:1790 |
7986 | #, fuzzy, c-format | 7856 | #, fuzzy, c-format |
7987 | msgid "Malformed configuration file `%s', exit ...\n" | 7857 | msgid "Malformed configuration file `%s', exit ...\n" |
7988 | msgstr "解析配置文件“%s”失败\n" | 7858 | msgstr "解析配置文件“%s”失败\n" |
7989 | 7859 | ||
7990 | #: src/transport/tcp_service_legacy.c:1458 src/util/program.c:261 | 7860 | #: src/transport/tcp_service_legacy.c:1458 src/util/program.c:272 |
7991 | #: src/util/service.c:1801 | 7861 | #: src/util/service.c:1801 |
7992 | #, fuzzy | 7862 | #, fuzzy |
7993 | msgid "Malformed configuration, exit ...\n" | 7863 | msgid "Malformed configuration, exit ...\n" |
7994 | msgstr "解析配置文件“%s”失败\n" | 7864 | msgstr "解析配置文件“%s”失败\n" |
7995 | 7865 | ||
7996 | #: src/transport/tcp_service_legacy.c:1463 src/util/program.c:256 | 7866 | #: src/transport/tcp_service_legacy.c:1463 src/util/program.c:267 |
7997 | #: src/util/service.c:1807 | 7867 | #: src/util/service.c:1807 |
7998 | #, fuzzy, c-format | 7868 | #, fuzzy, c-format |
7999 | msgid "Could not access configuration file `%s'\n" | 7869 | msgid "Could not access configuration file `%s'\n" |
@@ -8033,7 +7903,7 @@ msgstr "" | |||
8033 | msgid "Metadata `%s' failed to deserialize" | 7903 | msgid "Metadata `%s' failed to deserialize" |
8034 | msgstr "" | 7904 | msgstr "" |
8035 | 7905 | ||
8036 | #: src/util/client.c:882 | 7906 | #: src/util/client.c:911 |
8037 | #, c-format | 7907 | #, c-format |
8038 | msgid "Need a non-empty hostname for service `%s'.\n" | 7908 | msgid "Need a non-empty hostname for service `%s'.\n" |
8039 | msgstr "" | 7909 | msgstr "" |
@@ -8131,22 +8001,22 @@ msgid "" | |||
8131 | "%llu)\n" | 8001 | "%llu)\n" |
8132 | msgstr "" | 8002 | msgstr "" |
8133 | 8003 | ||
8134 | #: src/util/crypto_ecc.c:777 | 8004 | #: src/util/crypto_ecc.c:810 |
8135 | #, fuzzy, c-format | 8005 | #, fuzzy, c-format |
8136 | msgid "ECC signing failed at %s:%d: %s\n" | 8006 | msgid "ECC signing failed at %s:%d: %s\n" |
8137 | msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n" | 8007 | msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n" |
8138 | 8008 | ||
8139 | #: src/util/crypto_ecc.c:827 | 8009 | #: src/util/crypto_ecc.c:860 |
8140 | #, fuzzy, c-format | 8010 | #, fuzzy, c-format |
8141 | msgid "EdDSA signing failed at %s:%d: %s\n" | 8011 | msgid "EdDSA signing failed at %s:%d: %s\n" |
8142 | msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n" | 8012 | msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n" |
8143 | 8013 | ||
8144 | #: src/util/crypto_ecc.c:901 | 8014 | #: src/util/crypto_ecc.c:934 |
8145 | #, fuzzy, c-format | 8015 | #, fuzzy, c-format |
8146 | msgid "ECDSA signature verification failed at %s:%d: %s\n" | 8016 | msgid "ECDSA signature verification failed at %s:%d: %s\n" |
8147 | msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n" | 8017 | msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n" |
8148 | 8018 | ||
8149 | #: src/util/crypto_ecc.c:958 | 8019 | #: src/util/crypto_ecc.c:991 |
8150 | #, fuzzy, c-format | 8020 | #, fuzzy, c-format |
8151 | msgid "EdDSA signature verification failed at %s:%d: %s\n" | 8021 | msgid "EdDSA signature verification failed at %s:%d: %s\n" |
8152 | msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n" | 8022 | msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n" |
@@ -8367,86 +8237,90 @@ msgstr "" | |||
8367 | msgid "Manipulate GNUnet configuration files" | 8237 | msgid "Manipulate GNUnet configuration files" |
8368 | msgstr "更改配置文件中的一个值" | 8238 | msgstr "更改配置文件中的一个值" |
8369 | 8239 | ||
8370 | #: src/util/gnunet-ecc.c:89 | 8240 | #: src/util/gnunet-ecc.c:94 |
8371 | #, fuzzy, c-format | 8241 | #, fuzzy, c-format |
8372 | msgid "Failed to open `%s': %s\n" | 8242 | msgid "Failed to open `%s': %s\n" |
8373 | msgstr "打开日志文件“%s”失败:%s\n" | 8243 | msgstr "打开日志文件“%s”失败:%s\n" |
8374 | 8244 | ||
8375 | #: src/util/gnunet-ecc.c:125 | 8245 | #: src/util/gnunet-ecc.c:130 |
8376 | #, c-format | 8246 | #, c-format |
8377 | msgid "Generating %u keys like %s, please wait" | 8247 | msgid "Generating %u keys like %s, please wait" |
8378 | msgstr "" | 8248 | msgstr "" |
8379 | 8249 | ||
8380 | #: src/util/gnunet-ecc.c:138 | 8250 | #: src/util/gnunet-ecc.c:143 |
8381 | #, c-format | 8251 | #, c-format |
8382 | msgid "Generating %u keys, please wait" | 8252 | msgid "Generating %u keys, please wait" |
8383 | msgstr "" | 8253 | msgstr "" |
8384 | 8254 | ||
8385 | #: src/util/gnunet-ecc.c:179 | 8255 | #: src/util/gnunet-ecc.c:184 |
8386 | #, fuzzy, c-format | 8256 | #, fuzzy, c-format |
8387 | msgid "" | 8257 | msgid "" |
8388 | "\n" | 8258 | "\n" |
8389 | "Failed to write to `%s': %s\n" | 8259 | "Failed to write to `%s': %s\n" |
8390 | msgstr "运行 %s失败:%s %d\n" | 8260 | msgstr "运行 %s失败:%s %d\n" |
8391 | 8261 | ||
8392 | #: src/util/gnunet-ecc.c:189 | 8262 | #: src/util/gnunet-ecc.c:194 |
8393 | #, c-format | 8263 | #, c-format |
8394 | msgid "" | 8264 | msgid "" |
8395 | "\n" | 8265 | "\n" |
8396 | "Finished!\n" | 8266 | "Finished!\n" |
8397 | msgstr "" | 8267 | msgstr "" |
8398 | 8268 | ||
8399 | #: src/util/gnunet-ecc.c:192 | 8269 | #: src/util/gnunet-ecc.c:197 |
8400 | #, c-format | 8270 | #, c-format |
8401 | msgid "" | 8271 | msgid "" |
8402 | "\n" | 8272 | "\n" |
8403 | "Error, %u keys not generated\n" | 8273 | "Error, %u keys not generated\n" |
8404 | msgstr "" | 8274 | msgstr "" |
8405 | 8275 | ||
8406 | #: src/util/gnunet-ecc.c:283 | 8276 | #: src/util/gnunet-ecc.c:288 |
8407 | #, c-format | 8277 | #, c-format |
8408 | msgid "Hostkeys file `%s' not found\n" | 8278 | msgid "Hostkeys file `%s' not found\n" |
8409 | msgstr "" | 8279 | msgstr "" |
8410 | 8280 | ||
8411 | #: src/util/gnunet-ecc.c:294 | 8281 | #: src/util/gnunet-ecc.c:299 |
8412 | #, fuzzy, c-format | 8282 | #, fuzzy, c-format |
8413 | msgid "Hostkeys file `%s' is empty\n" | 8283 | msgid "Hostkeys file `%s' is empty\n" |
8414 | msgstr "找不到接口“%s”的一个 IP 地址。\n" | 8284 | msgstr "找不到接口“%s”的一个 IP 地址。\n" |
8415 | 8285 | ||
8416 | #: src/util/gnunet-ecc.c:316 | 8286 | #: src/util/gnunet-ecc.c:321 |
8417 | #, fuzzy, c-format | 8287 | #, fuzzy, c-format |
8418 | msgid "Could not read hostkey file: %s\n" | 8288 | msgid "Could not read hostkey file: %s\n" |
8419 | msgstr "找不到接口“%s”的一个 IP 地址。\n" | 8289 | msgstr "找不到接口“%s”的一个 IP 地址。\n" |
8420 | 8290 | ||
8421 | #: src/util/gnunet-ecc.c:367 | 8291 | #: src/util/gnunet-ecc.c:372 |
8422 | msgid "No hostkey file specified on command line\n" | 8292 | msgid "No hostkey file specified on command line\n" |
8423 | msgstr "" | 8293 | msgstr "" |
8424 | 8294 | ||
8425 | #: src/util/gnunet-ecc.c:425 | 8295 | #: src/util/gnunet-ecc.c:437 |
8426 | msgid "list keys included in a file (for testing)" | 8296 | msgid "list keys included in a file (for testing)" |
8427 | msgstr "" | 8297 | msgstr "" |
8428 | 8298 | ||
8429 | #: src/util/gnunet-ecc.c:430 | 8299 | #: src/util/gnunet-ecc.c:442 |
8430 | msgid "number of keys to list included in a file (for testing)" | 8300 | msgid "number of keys to list included in a file (for testing)" |
8431 | msgstr "" | 8301 | msgstr "" |
8432 | 8302 | ||
8433 | #: src/util/gnunet-ecc.c:435 | 8303 | #: src/util/gnunet-ecc.c:447 |
8434 | msgid "create COUNT public-private key pairs (for testing)" | 8304 | msgid "create COUNT public-private key pairs (for testing)" |
8435 | msgstr "" | 8305 | msgstr "" |
8436 | 8306 | ||
8437 | #: src/util/gnunet-ecc.c:439 | 8307 | #: src/util/gnunet-ecc.c:451 |
8438 | msgid "print the public key in ASCII format" | 8308 | msgid "print the public key in ASCII format" |
8439 | msgstr "" | 8309 | msgstr "" |
8440 | 8310 | ||
8441 | #: src/util/gnunet-ecc.c:443 | 8311 | #: src/util/gnunet-ecc.c:455 |
8312 | msgid "print the private key in ASCII format" | ||
8313 | msgstr "" | ||
8314 | |||
8315 | #: src/util/gnunet-ecc.c:459 | ||
8442 | msgid "print the public key in HEX format" | 8316 | msgid "print the public key in HEX format" |
8443 | msgstr "" | 8317 | msgstr "" |
8444 | 8318 | ||
8445 | #: src/util/gnunet-ecc.c:447 | 8319 | #: src/util/gnunet-ecc.c:463 |
8446 | msgid "print examples of ECC operations (used for compatibility testing)" | 8320 | msgid "print examples of ECC operations (used for compatibility testing)" |
8447 | msgstr "" | 8321 | msgstr "" |
8448 | 8322 | ||
8449 | #: src/util/gnunet-ecc.c:463 | 8323 | #: src/util/gnunet-ecc.c:479 |
8450 | #, fuzzy | 8324 | #, fuzzy |
8451 | msgid "Manipulate GNUnet private ECC key files" | 8325 | msgid "Manipulate GNUnet private ECC key files" |
8452 | msgstr "更改配置文件中的一个值" | 8326 | msgstr "更改配置文件中的一个值" |
@@ -8606,22 +8480,22 @@ msgid "" | |||
8606 | "resolution will be unavailable.\n" | 8480 | "resolution will be unavailable.\n" |
8607 | msgstr "" | 8481 | msgstr "" |
8608 | 8482 | ||
8609 | #: src/util/resolver_api.c:826 | 8483 | #: src/util/resolver_api.c:827 |
8610 | #, c-format | 8484 | #, c-format |
8611 | msgid "Timeout trying to resolve hostname `%s'.\n" | 8485 | msgid "Timeout trying to resolve hostname `%s'.\n" |
8612 | msgstr "" | 8486 | msgstr "" |
8613 | 8487 | ||
8614 | #: src/util/resolver_api.c:839 | 8488 | #: src/util/resolver_api.c:840 |
8615 | #, fuzzy, c-format | 8489 | #, fuzzy, c-format |
8616 | msgid "Timeout trying to resolve IP address `%s'.\n" | 8490 | msgid "Timeout trying to resolve IP address `%s'.\n" |
8617 | msgstr "GNUnet 现在使用 IP 地址 %s。\n" | 8491 | msgstr "GNUnet 现在使用 IP 地址 %s。\n" |
8618 | 8492 | ||
8619 | #: src/util/resolver_api.c:1023 | 8493 | #: src/util/resolver_api.c:1024 |
8620 | msgid "Resolver not configured correctly.\n" | 8494 | msgid "Resolver not configured correctly.\n" |
8621 | msgstr "" | 8495 | msgstr "" |
8622 | 8496 | ||
8623 | #: src/util/resolver_api.c:1109 src/util/resolver_api.c:1132 | 8497 | #: src/util/resolver_api.c:1110 src/util/resolver_api.c:1133 |
8624 | #: src/util/resolver_api.c:1146 | 8498 | #: src/util/resolver_api.c:1147 |
8625 | #, fuzzy, c-format | 8499 | #, fuzzy, c-format |
8626 | msgid "Could not resolve our FQDN: %s\n" | 8500 | msgid "Could not resolve our FQDN: %s\n" |
8627 | msgstr "无法解析“%s”(%s):%s\n" | 8501 | msgstr "无法解析“%s”(%s):%s\n" |
@@ -8631,7 +8505,7 @@ msgid "" | |||
8631 | "Could not bind to any of the ports I was supposed to, refusing to run!\n" | 8505 | "Could not bind to any of the ports I was supposed to, refusing to run!\n" |
8632 | msgstr "" | 8506 | msgstr "" |
8633 | 8507 | ||
8634 | #: src/util/service.c:2081 | 8508 | #: src/util/service.c:2091 |
8635 | #, c-format | 8509 | #, c-format |
8636 | msgid "" | 8510 | msgid "" |
8637 | "Processing code for message of type %u did not call " | 8511 | "Processing code for message of type %u did not call " |
@@ -8813,63 +8687,63 @@ msgstr "" | |||
8813 | msgid "# ICMPv6 packets dropped (not allowed)" | 8687 | msgid "# ICMPv6 packets dropped (not allowed)" |
8814 | msgstr "" | 8688 | msgstr "" |
8815 | 8689 | ||
8816 | #: src/vpn/gnunet-service-vpn.c:2232 | 8690 | #: src/vpn/gnunet-service-vpn.c:2235 |
8817 | msgid "# Packets received from TUN interface" | 8691 | msgid "# Packets received from TUN interface" |
8818 | msgstr "" | 8692 | msgstr "" |
8819 | 8693 | ||
8820 | #: src/vpn/gnunet-service-vpn.c:2265 src/vpn/gnunet-service-vpn.c:2301 | 8694 | #: src/vpn/gnunet-service-vpn.c:2268 src/vpn/gnunet-service-vpn.c:2304 |
8821 | #, c-format | 8695 | #, c-format |
8822 | msgid "Packet received for unmapped destination `%s' (dropping it)\n" | 8696 | msgid "Packet received for unmapped destination `%s' (dropping it)\n" |
8823 | msgstr "" | 8697 | msgstr "" |
8824 | 8698 | ||
8825 | #: src/vpn/gnunet-service-vpn.c:2311 | 8699 | #: src/vpn/gnunet-service-vpn.c:2314 |
8826 | msgid "Received IPv4 packet with options (dropping it)\n" | 8700 | msgid "Received IPv4 packet with options (dropping it)\n" |
8827 | msgstr "" | 8701 | msgstr "" |
8828 | 8702 | ||
8829 | #: src/vpn/gnunet-service-vpn.c:2325 | 8703 | #: src/vpn/gnunet-service-vpn.c:2328 |
8830 | #, c-format | 8704 | #, c-format |
8831 | msgid "Received packet of unknown protocol %d from TUN (dropping it)\n" | 8705 | msgid "Received packet of unknown protocol %d from TUN (dropping it)\n" |
8832 | msgstr "" | 8706 | msgstr "" |
8833 | 8707 | ||
8834 | #: src/vpn/gnunet-service-vpn.c:2364 | 8708 | #: src/vpn/gnunet-service-vpn.c:2367 |
8835 | msgid "Failed to find unallocated IPv4 address in VPN's range\n" | 8709 | msgid "Failed to find unallocated IPv4 address in VPN's range\n" |
8836 | msgstr "" | 8710 | msgstr "" |
8837 | 8711 | ||
8838 | #: src/vpn/gnunet-service-vpn.c:2419 | 8712 | #: src/vpn/gnunet-service-vpn.c:2422 |
8839 | msgid "Failed to find unallocated IPv6 address in VPN's range\n" | 8713 | msgid "Failed to find unallocated IPv6 address in VPN's range\n" |
8840 | msgstr "" | 8714 | msgstr "" |
8841 | 8715 | ||
8842 | #: src/vpn/gnunet-service-vpn.c:2461 src/vpn/gnunet-service-vpn.c:2683 | 8716 | #: src/vpn/gnunet-service-vpn.c:2464 src/vpn/gnunet-service-vpn.c:2686 |
8843 | msgid "# Active destinations" | 8717 | msgid "# Active destinations" |
8844 | msgstr "" | 8718 | msgstr "" |
8845 | 8719 | ||
8846 | #: src/vpn/gnunet-service-vpn.c:2732 | 8720 | #: src/vpn/gnunet-service-vpn.c:2735 |
8847 | msgid "Failed to allocate IP address for new destination\n" | 8721 | msgid "Failed to allocate IP address for new destination\n" |
8848 | msgstr "" | 8722 | msgstr "" |
8849 | 8723 | ||
8850 | #: src/vpn/gnunet-service-vpn.c:2995 | 8724 | #: src/vpn/gnunet-service-vpn.c:2998 |
8851 | #, fuzzy | 8725 | #, fuzzy |
8852 | msgid "Must specify valid IPv6 address" | 8726 | msgid "Must specify valid IPv6 address" |
8853 | msgstr "“%s”不可用。\n" | 8727 | msgstr "“%s”不可用。\n" |
8854 | 8728 | ||
8855 | #: src/vpn/gnunet-service-vpn.c:3019 | 8729 | #: src/vpn/gnunet-service-vpn.c:3022 |
8856 | msgid "Must specify valid IPv6 mask" | 8730 | msgid "Must specify valid IPv6 mask" |
8857 | msgstr "" | 8731 | msgstr "" |
8858 | 8732 | ||
8859 | #: src/vpn/gnunet-service-vpn.c:3027 | 8733 | #: src/vpn/gnunet-service-vpn.c:3030 |
8860 | msgid "IPv6 support disabled as this system does not support IPv6\n" | 8734 | msgid "IPv6 support disabled as this system does not support IPv6\n" |
8861 | msgstr "" | 8735 | msgstr "" |
8862 | 8736 | ||
8863 | #: src/vpn/gnunet-service-vpn.c:3040 | 8737 | #: src/vpn/gnunet-service-vpn.c:3043 |
8864 | #, fuzzy | 8738 | #, fuzzy |
8865 | msgid "Must specify valid IPv4 address" | 8739 | msgid "Must specify valid IPv4 address" |
8866 | msgstr "“%s”不可用。\n" | 8740 | msgstr "“%s”不可用。\n" |
8867 | 8741 | ||
8868 | #: src/vpn/gnunet-service-vpn.c:3053 | 8742 | #: src/vpn/gnunet-service-vpn.c:3056 |
8869 | msgid "Must specify valid IPv4 mask" | 8743 | msgid "Must specify valid IPv4 mask" |
8870 | msgstr "" | 8744 | msgstr "" |
8871 | 8745 | ||
8872 | #: src/vpn/gnunet-service-vpn.c:3063 | 8746 | #: src/vpn/gnunet-service-vpn.c:3066 |
8873 | msgid "IPv4 support disabled as this system does not support IPv4\n" | 8747 | msgid "IPv4 support disabled as this system does not support IPv4\n" |
8874 | msgstr "" | 8748 | msgstr "" |
8875 | 8749 | ||
@@ -8961,10 +8835,6 @@ msgid "`%s' failed on file `%s' at %s:%d with error: %s\n" | |||
8961 | msgstr "" | 8835 | msgstr "" |
8962 | 8836 | ||
8963 | #, fuzzy | 8837 | #, fuzzy |
8964 | #~ msgid "Token `%s' is malformed\n" | ||
8965 | #~ msgstr "“%s”的参数无效。\n" | ||
8966 | |||
8967 | #, fuzzy | ||
8968 | #~ msgid "Failed to create indices\n" | 8838 | #~ msgid "Failed to create indices\n" |
8969 | #~ msgstr "发送消息失败。\n" | 8839 | #~ msgstr "发送消息失败。\n" |
8970 | 8840 | ||
diff --git a/src/arm/gnunet-service-arm.c b/src/arm/gnunet-service-arm.c index 2db2ba0d1..bf5982d10 100644 --- a/src/arm/gnunet-service-arm.c +++ b/src/arm/gnunet-service-arm.c | |||
@@ -1915,7 +1915,6 @@ setup_service (void *cls, | |||
1915 | struct sockaddr **addrs; | 1915 | struct sockaddr **addrs; |
1916 | socklen_t *addr_lens; | 1916 | socklen_t *addr_lens; |
1917 | int ret; | 1917 | int ret; |
1918 | unsigned int i; | ||
1919 | 1918 | ||
1920 | if (0 == strcasecmp (section, | 1919 | if (0 == strcasecmp (section, |
1921 | "arm")) | 1920 | "arm")) |
@@ -2027,7 +2026,7 @@ setup_service (void *cls, | |||
2027 | &addr_lens))) | 2026 | &addr_lens))) |
2028 | return; | 2027 | return; |
2029 | /* this will free (or capture) addrs[i] */ | 2028 | /* this will free (or capture) addrs[i] */ |
2030 | for (i = 0; i < ret; i++) | 2029 | for (unsigned int i = 0; i < ret; i++) |
2031 | create_listen_socket (addrs[i], | 2030 | create_listen_socket (addrs[i], |
2032 | addr_lens[i], | 2031 | addr_lens[i], |
2033 | sl); | 2032 | sl); |
diff --git a/src/auction/Makefile.am b/src/auction/Makefile.am index bdede0ce0..f86e846e2 100644 --- a/src/auction/Makefile.am +++ b/src/auction/Makefile.am | |||
@@ -68,6 +68,11 @@ test_auction_api_LDADD = \ | |||
68 | check_SCRIPTS = \ | 68 | check_SCRIPTS = \ |
69 | test_auction_create.sh | 69 | test_auction_create.sh |
70 | 70 | ||
71 | EXTRA_DIST = \ | ||
72 | auction.h \ | ||
73 | auction.conf \ | ||
74 | $(check_SCRIPTS) | ||
75 | |||
71 | if ENABLE_TEST_RUN | 76 | if ENABLE_TEST_RUN |
72 | AM_TESTS_ENVIRONMENT=export GNUNET_PREFIX=$${GNUNET_PREFIX:-@libdir@};export PATH=$${GNUNET_PREFIX:-@prefix@}/bin:$$PATH;unset XDG_DATA_HOME;unset XDG_CONFIG_HOME; | 77 | AM_TESTS_ENVIRONMENT=export GNUNET_PREFIX=$${GNUNET_PREFIX:-@libdir@};export PATH=$${GNUNET_PREFIX:-@prefix@}/bin:$$PATH;unset XDG_DATA_HOME;unset XDG_CONFIG_HOME; |
73 | TESTS = $(check_PROGRAMS) $(check_SCRIPTS) | 78 | TESTS = $(check_PROGRAMS) $(check_SCRIPTS) |
diff --git a/src/cadet/cadet_api.c b/src/cadet/cadet_api.c index 00a482452..497c9a4f0 100644 --- a/src/cadet/cadet_api.c +++ b/src/cadet/cadet_api.c | |||
@@ -391,6 +391,8 @@ destroy_channel_on_reconnect_cb (void *cls, | |||
391 | /* struct GNUNET_CADET_Handle *handle = cls; */ | 391 | /* struct GNUNET_CADET_Handle *handle = cls; */ |
392 | struct GNUNET_CADET_Channel *ch = value; | 392 | struct GNUNET_CADET_Channel *ch = value; |
393 | 393 | ||
394 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | ||
395 | "Destroying channel due to reconnect\n"); | ||
394 | destroy_channel (ch); | 396 | destroy_channel (ch); |
395 | return GNUNET_OK; | 397 | return GNUNET_OK; |
396 | } | 398 | } |
@@ -824,6 +826,29 @@ handle_mq_error (void *cls, | |||
824 | 826 | ||
825 | 827 | ||
826 | /** | 828 | /** |
829 | * Check that message received from CADET service is well-formed. | ||
830 | * | ||
831 | * @param cls the `struct GNUNET_CADET_Handle` | ||
832 | * @param message the message we got | ||
833 | * @return #GNUNET_OK if the message is well-formed, | ||
834 | * #GNUNET_SYSERR otherwise | ||
835 | */ | ||
836 | static int | ||
837 | check_get_peers (void *cls, | ||
838 | const struct GNUNET_MessageHeader *message) | ||
839 | { | ||
840 | size_t esize; | ||
841 | |||
842 | esize = ntohs (message->size); | ||
843 | if (sizeof (struct GNUNET_CADET_LocalInfoPeer) == esize) | ||
844 | return GNUNET_OK; | ||
845 | if (sizeof (struct GNUNET_MessageHeader) == esize) | ||
846 | return GNUNET_OK; | ||
847 | return GNUNET_SYSERR; | ||
848 | } | ||
849 | |||
850 | |||
851 | /** | ||
827 | * Process a local reply about info on all tunnels, pass info to the user. | 852 | * Process a local reply about info on all tunnels, pass info to the user. |
828 | * | 853 | * |
829 | * @param cls Closure (Cadet handle). | 854 | * @param cls Closure (Cadet handle). |
@@ -831,17 +856,26 @@ handle_mq_error (void *cls, | |||
831 | */ | 856 | */ |
832 | static void | 857 | static void |
833 | handle_get_peers (void *cls, | 858 | handle_get_peers (void *cls, |
834 | const struct GNUNET_CADET_LocalInfoPeer *msg) | 859 | const struct GNUNET_MessageHeader *msg) |
835 | { | 860 | { |
836 | struct GNUNET_CADET_Handle *h = cls; | 861 | struct GNUNET_CADET_Handle *h = cls; |
862 | const struct GNUNET_CADET_LocalInfoPeer *info = | ||
863 | (const struct GNUNET_CADET_LocalInfoPeer *) msg; | ||
837 | 864 | ||
838 | if (NULL == h->info_cb.peers_cb) | 865 | if (NULL == h->info_cb.peers_cb) |
839 | return; | 866 | return; |
840 | h->info_cb.peers_cb (h->info_cls, | 867 | if (sizeof (struct GNUNET_CADET_LocalInfoPeer) == ntohs (msg->size)) |
841 | &msg->destination, | 868 | h->info_cb.peers_cb (h->info_cls, |
842 | (int) ntohs (msg->tunnel), | 869 | &info->destination, |
843 | (unsigned int) ntohs (msg->paths), | 870 | (int) ntohs (info->tunnel), |
844 | 0); | 871 | (unsigned int) ntohs (info->paths), |
872 | 0); | ||
873 | else | ||
874 | h->info_cb.peers_cb (h->info_cls, | ||
875 | NULL, | ||
876 | 0, | ||
877 | 0, | ||
878 | 0); | ||
845 | } | 879 | } |
846 | 880 | ||
847 | 881 | ||
@@ -946,6 +980,29 @@ handle_get_peer (void *cls, | |||
946 | 980 | ||
947 | 981 | ||
948 | /** | 982 | /** |
983 | * Check that message received from CADET service is well-formed. | ||
984 | * | ||
985 | * @param cls the `struct GNUNET_CADET_Handle` | ||
986 | * @param message the message we got | ||
987 | * @return #GNUNET_OK if the message is well-formed, | ||
988 | * #GNUNET_SYSERR otherwise | ||
989 | */ | ||
990 | static int | ||
991 | check_get_tunnels (void *cls, | ||
992 | const struct GNUNET_MessageHeader *message) | ||
993 | { | ||
994 | size_t esize; | ||
995 | |||
996 | esize = ntohs (message->size); | ||
997 | if (sizeof (struct GNUNET_CADET_LocalInfoTunnel) == esize) | ||
998 | return GNUNET_OK; | ||
999 | if (sizeof (struct GNUNET_MessageHeader) == esize) | ||
1000 | return GNUNET_OK; | ||
1001 | return GNUNET_SYSERR; | ||
1002 | } | ||
1003 | |||
1004 | |||
1005 | /** | ||
949 | * Process a local reply about info on all tunnels, pass info to the user. | 1006 | * Process a local reply about info on all tunnels, pass info to the user. |
950 | * | 1007 | * |
951 | * @param cls Closure (Cadet handle). | 1008 | * @param cls Closure (Cadet handle). |
@@ -953,19 +1010,28 @@ handle_get_peer (void *cls, | |||
953 | */ | 1010 | */ |
954 | static void | 1011 | static void |
955 | handle_get_tunnels (void *cls, | 1012 | handle_get_tunnels (void *cls, |
956 | const struct GNUNET_CADET_LocalInfoTunnel *msg) | 1013 | const struct GNUNET_MessageHeader *msg) |
957 | { | 1014 | { |
958 | struct GNUNET_CADET_Handle *h = cls; | 1015 | struct GNUNET_CADET_Handle *h = cls; |
1016 | const struct GNUNET_CADET_LocalInfoTunnel *info = | ||
1017 | (const struct GNUNET_CADET_LocalInfoTunnel *) msg; | ||
959 | 1018 | ||
960 | if (NULL == h->info_cb.tunnels_cb) | 1019 | if (NULL == h->info_cb.tunnels_cb) |
961 | return; | 1020 | return; |
962 | h->info_cb.tunnels_cb (h->info_cls, | 1021 | if (sizeof (struct GNUNET_CADET_LocalInfoTunnel) == ntohs (msg->size)) |
963 | &msg->destination, | 1022 | h->info_cb.tunnels_cb (h->info_cls, |
964 | ntohl (msg->channels), | 1023 | &info->destination, |
965 | ntohl (msg->connections), | 1024 | ntohl (info->channels), |
966 | ntohs (msg->estate), | 1025 | ntohl (info->connections), |
967 | ntohs (msg->cstate)); | 1026 | ntohs (info->estate), |
968 | 1027 | ntohs (info->cstate)); | |
1028 | else | ||
1029 | h->info_cb.tunnels_cb (h->info_cls, | ||
1030 | NULL, | ||
1031 | 0, | ||
1032 | 0, | ||
1033 | 0, | ||
1034 | 0); | ||
969 | } | 1035 | } |
970 | 1036 | ||
971 | 1037 | ||
@@ -1075,18 +1141,18 @@ reconnect (struct GNUNET_CADET_Handle *h) | |||
1075 | GNUNET_MESSAGE_TYPE_CADET_LOCAL_ACK, | 1141 | GNUNET_MESSAGE_TYPE_CADET_LOCAL_ACK, |
1076 | struct GNUNET_CADET_LocalAck, | 1142 | struct GNUNET_CADET_LocalAck, |
1077 | h), | 1143 | h), |
1078 | GNUNET_MQ_hd_fixed_size (get_peers, | 1144 | GNUNET_MQ_hd_var_size (get_peers, |
1079 | GNUNET_MESSAGE_TYPE_CADET_LOCAL_INFO_PEERS, | 1145 | GNUNET_MESSAGE_TYPE_CADET_LOCAL_INFO_PEERS, |
1080 | struct GNUNET_CADET_LocalInfoPeer, | 1146 | struct GNUNET_MessageHeader, |
1081 | h), | 1147 | h), |
1082 | GNUNET_MQ_hd_var_size (get_peer, | 1148 | GNUNET_MQ_hd_var_size (get_peer, |
1083 | GNUNET_MESSAGE_TYPE_CADET_LOCAL_INFO_PEER, | 1149 | GNUNET_MESSAGE_TYPE_CADET_LOCAL_INFO_PEER, |
1084 | struct GNUNET_CADET_LocalInfoPeer, | 1150 | struct GNUNET_CADET_LocalInfoPeer, |
1085 | h), | 1151 | h), |
1086 | GNUNET_MQ_hd_fixed_size (get_tunnels, | 1152 | GNUNET_MQ_hd_var_size (get_tunnels, |
1087 | GNUNET_MESSAGE_TYPE_CADET_LOCAL_INFO_TUNNELS, | 1153 | GNUNET_MESSAGE_TYPE_CADET_LOCAL_INFO_TUNNELS, |
1088 | struct GNUNET_CADET_LocalInfoTunnel, | 1154 | struct GNUNET_MessageHeader, |
1089 | h), | 1155 | h), |
1090 | GNUNET_MQ_hd_var_size (get_tunnel, | 1156 | GNUNET_MQ_hd_var_size (get_tunnel, |
1091 | GNUNET_MESSAGE_TYPE_CADET_LOCAL_INFO_TUNNEL, | 1157 | GNUNET_MESSAGE_TYPE_CADET_LOCAL_INFO_TUNNEL, |
1092 | struct GNUNET_CADET_LocalInfoTunnel, | 1158 | struct GNUNET_CADET_LocalInfoTunnel, |
@@ -1094,6 +1160,7 @@ reconnect (struct GNUNET_CADET_Handle *h) | |||
1094 | GNUNET_MQ_handler_end () | 1160 | GNUNET_MQ_handler_end () |
1095 | }; | 1161 | }; |
1096 | 1162 | ||
1163 | GNUNET_assert (NULL == h->mq); | ||
1097 | h->mq = GNUNET_CLIENT_connect (h->cfg, | 1164 | h->mq = GNUNET_CLIENT_connect (h->cfg, |
1098 | "cadet", | 1165 | "cadet", |
1099 | handlers, | 1166 | handlers, |
@@ -1132,6 +1199,8 @@ destroy_channel_cb (void *cls, | |||
1132 | "channel %X not destroyed\n", | 1199 | "channel %X not destroyed\n", |
1133 | ntohl (ch->ccn.channel_of_client)); | 1200 | ntohl (ch->ccn.channel_of_client)); |
1134 | } | 1201 | } |
1202 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | ||
1203 | "Destroying channel due to GNUNET_CADET_disconnect()\n"); | ||
1135 | destroy_channel (ch); | 1204 | destroy_channel (ch); |
1136 | return GNUNET_OK; | 1205 | return GNUNET_OK; |
1137 | } | 1206 | } |
@@ -1246,6 +1315,8 @@ GNUNET_CADET_channel_destroy (struct GNUNET_CADET_Channel *channel) | |||
1246 | GNUNET_MQ_send (h->mq, | 1315 | GNUNET_MQ_send (h->mq, |
1247 | env); | 1316 | env); |
1248 | } | 1317 | } |
1318 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | ||
1319 | "Destroying channel due to GNUNET_CADET_channel_destroy()\n"); | ||
1249 | destroy_channel (channel); | 1320 | destroy_channel (channel); |
1250 | } | 1321 | } |
1251 | 1322 | ||
@@ -1600,7 +1671,10 @@ GNUNET_CADET_open_port (struct GNUNET_CADET_Handle *h, | |||
1600 | 1671 | ||
1601 | GNUNET_assert (NULL != connects); | 1672 | GNUNET_assert (NULL != connects); |
1602 | GNUNET_assert (NULL != disconnects); | 1673 | GNUNET_assert (NULL != disconnects); |
1603 | 1674 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | |
1675 | "Listening to CADET port %s\n", | ||
1676 | GNUNET_h2s (port)); | ||
1677 | |||
1604 | p = GNUNET_new (struct GNUNET_CADET_Port); | 1678 | p = GNUNET_new (struct GNUNET_CADET_Port); |
1605 | p->cadet = h; | 1679 | p->cadet = h; |
1606 | p->id = *port; | 1680 | p->id = *port; |
@@ -1663,6 +1737,10 @@ GNUNET_CADET_channel_create (struct GNUNET_CADET_Handle *h, | |||
1663 | struct GNUNET_MQ_Envelope *env; | 1737 | struct GNUNET_MQ_Envelope *env; |
1664 | 1738 | ||
1665 | GNUNET_assert (NULL != disconnects); | 1739 | GNUNET_assert (NULL != disconnects); |
1740 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1741 | "Creating channel to peer %s at port %s\n", | ||
1742 | GNUNET_i2s (destination), | ||
1743 | GNUNET_h2s (port)); | ||
1666 | ch = create_channel (h, | 1744 | ch = create_channel (h, |
1667 | NULL); | 1745 | NULL); |
1668 | ch->ctx = channel_cls; | 1746 | ch->ctx = channel_cls; |
diff --git a/src/cadet/cadet_test_lib.c b/src/cadet/cadet_test_lib.c index 1df6bff0d..20ef028b2 100644 --- a/src/cadet/cadet_test_lib.c +++ b/src/cadet/cadet_test_lib.c | |||
@@ -241,6 +241,7 @@ GNUNET_CADET_TEST_cleanup (struct GNUNET_CADET_TEST_Context *ctx) | |||
241 | } | 241 | } |
242 | GNUNET_free (ctx->ops); | 242 | GNUNET_free (ctx->ops); |
243 | GNUNET_free (ctx->cadets); | 243 | GNUNET_free (ctx->cadets); |
244 | GNUNET_free (ctx->handlers); | ||
244 | GNUNET_free (ctx); | 245 | GNUNET_free (ctx); |
245 | GNUNET_SCHEDULER_shutdown (); | 246 | GNUNET_SCHEDULER_shutdown (); |
246 | } | 247 | } |
diff --git a/src/cadet/gnunet-cadet.c b/src/cadet/gnunet-cadet.c index 675e7faf0..a9b02714b 100644 --- a/src/cadet/gnunet-cadet.c +++ b/src/cadet/gnunet-cadet.c | |||
@@ -693,6 +693,7 @@ show_tunnel (void *cls) | |||
693 | { | 693 | { |
694 | struct GNUNET_PeerIdentity pid; | 694 | struct GNUNET_PeerIdentity pid; |
695 | 695 | ||
696 | job = NULL; | ||
696 | if (GNUNET_OK != | 697 | if (GNUNET_OK != |
697 | GNUNET_CRYPTO_eddsa_public_key_from_string (tunnel_id, | 698 | GNUNET_CRYPTO_eddsa_public_key_from_string (tunnel_id, |
698 | strlen (tunnel_id), | 699 | strlen (tunnel_id), |
diff --git a/src/cadet/gnunet-service-cadet_core.c b/src/cadet/gnunet-service-cadet_core.c index ae03b4f35..84aff1857 100644 --- a/src/cadet/gnunet-service-cadet_core.c +++ b/src/cadet/gnunet-service-cadet_core.c | |||
@@ -623,7 +623,7 @@ timeout_cb (void *cls) | |||
623 | { | 623 | { |
624 | exp = GNUNET_TIME_absolute_add (r->last_use, | 624 | exp = GNUNET_TIME_absolute_add (r->last_use, |
625 | linger); | 625 | linger); |
626 | if (0 != GNUNET_TIME_absolute_get_duration (exp).rel_value_us) | 626 | if (0 != GNUNET_TIME_absolute_get_remaining (exp).rel_value_us) |
627 | { | 627 | { |
628 | /* Route not yet timed out, wait until it does. */ | 628 | /* Route not yet timed out, wait until it does. */ |
629 | timeout_task = GNUNET_SCHEDULER_add_at (exp, | 629 | timeout_task = GNUNET_SCHEDULER_add_at (exp, |
@@ -631,6 +631,11 @@ timeout_cb (void *cls) | |||
631 | NULL); | 631 | NULL); |
632 | return; | 632 | return; |
633 | } | 633 | } |
634 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | ||
635 | "Sending BROKEN due to timeout (%s was last use, %s linger)\n", | ||
636 | GNUNET_STRINGS_absolute_time_to_string (r->last_use), | ||
637 | GNUNET_STRINGS_relative_time_to_string (linger, | ||
638 | GNUNET_YES)); | ||
634 | send_broken (&r->prev, | 639 | send_broken (&r->prev, |
635 | &r->cid, | 640 | &r->cid, |
636 | NULL, | 641 | NULL, |
@@ -688,6 +693,8 @@ dir_ready_cb (void *cls, | |||
688 | return; | 693 | return; |
689 | } | 694 | } |
690 | odir = (dir == &route->next) ? &route->prev : &route->next; | 695 | odir = (dir == &route->next) ? &route->prev : &route->next; |
696 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | ||
697 | "Sending BROKEN due to MQ going down\n"); | ||
691 | send_broken (&route->next, | 698 | send_broken (&route->next, |
692 | &route->cid, | 699 | &route->cid, |
693 | GCP_get_id (odir->hop), | 700 | GCP_get_id (odir->hop), |
@@ -771,6 +778,33 @@ handle_connection_create (void *cls, | |||
771 | 778 | ||
772 | options = (enum GNUNET_CADET_ChannelOption) ntohl (msg->options); | 779 | options = (enum GNUNET_CADET_ChannelOption) ntohl (msg->options); |
773 | path_length = size / sizeof (struct GNUNET_PeerIdentity); | 780 | path_length = size / sizeof (struct GNUNET_PeerIdentity); |
781 | if (0 == path_length) | ||
782 | { | ||
783 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
784 | "Dropping CADET_CONNECTION_CREATE with empty path\n"); | ||
785 | GNUNET_break_op (0); | ||
786 | return; | ||
787 | } | ||
788 | /* Check for loops */ | ||
789 | struct GNUNET_CONTAINER_MultiPeerMap *map; | ||
790 | map = GNUNET_CONTAINER_multipeermap_create (path_length * 2, | ||
791 | GNUNET_YES); | ||
792 | GNUNET_assert (NULL != map); | ||
793 | for (off = 0; off < path_length; off++) { | ||
794 | if (GNUNET_SYSERR == | ||
795 | GNUNET_CONTAINER_multipeermap_put (map, | ||
796 | &pids[off], | ||
797 | NULL, | ||
798 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY)) { | ||
799 | /* bogus request */ | ||
800 | GNUNET_CONTAINER_multipeermap_destroy (map); | ||
801 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
802 | "Dropping CADET_CONNECTION_CREATE with cyclic path\n"); | ||
803 | GNUNET_break_op (0); | ||
804 | return; | ||
805 | } | ||
806 | } | ||
807 | GNUNET_CONTAINER_multipeermap_destroy (map); | ||
774 | /* Initiator is at offset 0. */ | 808 | /* Initiator is at offset 0. */ |
775 | for (off=1;off<path_length;off++) | 809 | for (off=1;off<path_length;off++) |
776 | if (0 == memcmp (&my_full_id, | 810 | if (0 == memcmp (&my_full_id, |
@@ -779,7 +813,8 @@ handle_connection_create (void *cls, | |||
779 | break; | 813 | break; |
780 | if (off == path_length) | 814 | if (off == path_length) |
781 | { | 815 | { |
782 | /* We are not on the path, bogus request */ | 816 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
817 | "Dropping CADET_CONNECTION_CREATE without us in the path\n"); | ||
783 | GNUNET_break_op (0); | 818 | GNUNET_break_op (0); |
784 | return; | 819 | return; |
785 | } | 820 | } |
@@ -787,7 +822,8 @@ handle_connection_create (void *cls, | |||
787 | if (sender != GCP_get (&pids[off - 1], | 822 | if (sender != GCP_get (&pids[off - 1], |
788 | GNUNET_NO)) | 823 | GNUNET_NO)) |
789 | { | 824 | { |
790 | /* sender is not on the path, not allowed */ | 825 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
826 | "Dropping CADET_CONNECTION_CREATE without sender in the path\n"); | ||
791 | GNUNET_break_op (0); | 827 | GNUNET_break_op (0); |
792 | return; | 828 | return; |
793 | } | 829 | } |
diff --git a/src/cadet/gnunet-service-cadet_paths.c b/src/cadet/gnunet-service-cadet_paths.c index 7b90fe152..9dd6f1ddd 100644 --- a/src/cadet/gnunet-service-cadet_paths.c +++ b/src/cadet/gnunet-service-cadet_paths.c | |||
@@ -179,7 +179,7 @@ GCPP_del_connection (struct CadetPeerPath *path, | |||
179 | GCC_2s (cc), | 179 | GCC_2s (cc), |
180 | GCPP_2s (path), | 180 | GCPP_2s (path), |
181 | off); | 181 | off); |
182 | GNUNET_assert (off < path->entries_length); /* FIXME: #4909: This assertion fails sometimes! */ | 182 | GNUNET_assert (off < path->entries_length); |
183 | entry = path->entries[off]; | 183 | entry = path->entries[off]; |
184 | GNUNET_assert (cc == entry->cc); | 184 | GNUNET_assert (cc == entry->cc); |
185 | entry->cc = NULL; | 185 | entry->cc = NULL; |
@@ -187,33 +187,51 @@ GCPP_del_connection (struct CadetPeerPath *path, | |||
187 | 187 | ||
188 | 188 | ||
189 | /** | 189 | /** |
190 | * This path is no longer needed, free resources. | 190 | * Tries to attach @a path to a peer, working backwards from the end |
191 | * and stopping at @a stop_at. If path->hn is NULL on return then the | ||
192 | * path was not attached and you can assume that path->entries_length | ||
193 | * is equal to @a stop_at. | ||
191 | * | 194 | * |
192 | * @param path path resources to free | 195 | * @param path the path to attach |
196 | * @param stop_at the path length at which to stop trying | ||
193 | */ | 197 | */ |
194 | static void | 198 | static void |
195 | path_destroy (struct CadetPeerPath *path) | 199 | attach_path (struct CadetPeerPath *path, unsigned int stop_at) |
196 | { | 200 | { |
197 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 201 | GNUNET_assert (NULL == path->hn); |
198 | "Destroying path %s\n", | 202 | |
199 | GCPP_2s (path)); | 203 | /* Try to attach this path to a peer, working backwards from the end. */ |
200 | for (unsigned int i=0;i<path->entries_length;i++) | 204 | while (path->entries_length > stop_at) |
201 | { | 205 | { |
202 | struct CadetPeerPathEntry *entry = path->entries[i]; | 206 | unsigned int end = path->entries_length - 1; |
207 | struct CadetPeerPathEntry *entry = path->entries[end]; | ||
208 | int force = GNUNET_NO; | ||
203 | 209 | ||
210 | recalculate_path_desirability (path); | ||
211 | /* If the entry already has a connection using it, force attach. */ | ||
204 | if (NULL != entry->cc) | 212 | if (NULL != entry->cc) |
205 | { | 213 | force = GNUNET_YES; |
206 | struct CadetTConnection *ct; | 214 | path->hn = GCP_attach_path (entry->peer, |
215 | path, | ||
216 | end, | ||
217 | force); | ||
218 | if (NULL != path->hn) | ||
219 | break; | ||
207 | 220 | ||
208 | ct = GCC_get_ct (entry->cc); | 221 | /* Attach failed, trim this entry from the path. */ |
209 | if (NULL != ct) | 222 | GNUNET_assert (NULL == entry->cc); |
210 | GCT_connection_lost (ct); | 223 | GCP_path_entry_remove (entry->peer, |
211 | GCC_destroy_without_tunnel (entry->cc); | 224 | entry, |
212 | } | 225 | end); |
213 | GNUNET_free (entry); | 226 | GNUNET_free (entry); |
227 | path->entries[end] = NULL; | ||
228 | path->entries_length--; | ||
214 | } | 229 | } |
215 | GNUNET_free (path->entries); | 230 | |
216 | GNUNET_free (path); | 231 | /* Shrink array to actual path length. */ |
232 | GNUNET_array_grow (path->entries, | ||
233 | path->entries_length, | ||
234 | path->entries_length); | ||
217 | } | 235 | } |
218 | 236 | ||
219 | 237 | ||
@@ -228,7 +246,6 @@ void | |||
228 | GCPP_release (struct CadetPeerPath *path) | 246 | GCPP_release (struct CadetPeerPath *path) |
229 | { | 247 | { |
230 | struct CadetPeerPathEntry *entry; | 248 | struct CadetPeerPathEntry *entry; |
231 | int force; | ||
232 | 249 | ||
233 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 250 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
234 | "Owner releases path %s\n", | 251 | "Owner releases path %s\n", |
@@ -236,34 +253,23 @@ GCPP_release (struct CadetPeerPath *path) | |||
236 | path->hn = NULL; | 253 | path->hn = NULL; |
237 | entry = path->entries[path->entries_length - 1]; | 254 | entry = path->entries[path->entries_length - 1]; |
238 | GNUNET_assert (path == entry->path); | 255 | GNUNET_assert (path == entry->path); |
239 | while (1) | 256 | GNUNET_assert (NULL == entry->cc); |
257 | /* cut 'off' end of path */ | ||
258 | GCP_path_entry_remove (entry->peer, | ||
259 | entry, | ||
260 | path->entries_length - 1); | ||
261 | GNUNET_free (entry); | ||
262 | path->entries[path->entries_length - 1] = NULL; | ||
263 | path->entries_length--; | ||
264 | /* see if new peer at the end likes this path any better */ | ||
265 | attach_path (path, 0); | ||
266 | if (NULL == path->hn) | ||
240 | { | 267 | { |
241 | /* cut 'off' end of path */ | 268 | /* nobody wants us, discard the path */ |
242 | GNUNET_assert (NULL == entry->cc); | 269 | GNUNET_assert (0 == path->entries_length); |
243 | GCP_path_entry_remove (entry->peer, | 270 | GNUNET_assert (NULL == path->entries); |
244 | entry, | 271 | GNUNET_free (path); |
245 | path->entries_length - 1); | ||
246 | path->entries_length--; /* We don't bother shrinking the 'entries' array, | ||
247 | as it's probably not worth it. */ | ||
248 | GNUNET_free (entry); | ||
249 | if (0 == path->entries_length) | ||
250 | break; /* the end */ | ||
251 | |||
252 | /* see if new peer at the end likes this path any better */ | ||
253 | entry = path->entries[path->entries_length - 1]; | ||
254 | GNUNET_assert (path == entry->path); | ||
255 | force = (NULL == entry->cc) ? GNUNET_NO : GNUNET_YES; | ||
256 | path->hn = GCP_attach_path (entry->peer, | ||
257 | path, | ||
258 | path->entries_length - 1, | ||
259 | force); | ||
260 | if (NULL != path->hn) | ||
261 | return; /* yep, got attached, we are done. */ | ||
262 | GNUNET_assert (GNUNET_NO == force); | ||
263 | } | 272 | } |
264 | |||
265 | /* nobody wants us, discard the path */ | ||
266 | path_destroy (path); | ||
267 | } | 273 | } |
268 | 274 | ||
269 | 275 | ||
@@ -422,33 +428,13 @@ extend_path (struct CadetPeerPath *path, | |||
422 | path, | 428 | path, |
423 | path->hn); | 429 | path->hn); |
424 | path->hn = NULL; | 430 | path->hn = NULL; |
425 | for (i=num_peers-1;i>=0;i--) | 431 | path->entries_length = old_len + num_peers; |
426 | { | 432 | attach_path (path, old_len); |
427 | struct CadetPeerPathEntry *entry = path->entries[old_len + i]; | ||
428 | |||
429 | path->entries_length = old_len + i + 1; | ||
430 | recalculate_path_desirability (path); | ||
431 | if (NULL != entry->cc) | ||
432 | force = GNUNET_YES; | ||
433 | path->hn = GCP_attach_path (peers[i], | ||
434 | path, | ||
435 | old_len + (unsigned int) i, | ||
436 | force); | ||
437 | if (NULL != path->hn) | ||
438 | break; | ||
439 | GCP_path_entry_remove (entry->peer, | ||
440 | entry, | ||
441 | old_len + i); | ||
442 | GNUNET_free (entry); | ||
443 | path->entries[old_len + i] = NULL; | ||
444 | } | ||
445 | if (NULL == path->hn) | 433 | if (NULL == path->hn) |
446 | { | 434 | { |
447 | /* none of the peers is interested in this path; | 435 | /* none of the peers is interested in this path; |
448 | shrink path back and re-attach. */ | 436 | re-attach. */ |
449 | GNUNET_array_grow (path->entries, | 437 | GNUNET_assert (old_len == path->entries_length); |
450 | path->entries_length, | ||
451 | old_len); | ||
452 | path->hn = GCP_attach_path (path->entries[old_len - 1]->peer, | 438 | path->hn = GCP_attach_path (path->entries[old_len - 1]->peer, |
453 | path, | 439 | path, |
454 | old_len - 1, | 440 | old_len - 1, |
@@ -483,7 +469,6 @@ GCPP_try_path_from_dht (const struct GNUNET_PeerIdentity *get_path, | |||
483 | struct CadetPeer *cpath[get_path_length + put_path_length]; | 469 | struct CadetPeer *cpath[get_path_length + put_path_length]; |
484 | struct CheckMatchContext cm_ctx; | 470 | struct CheckMatchContext cm_ctx; |
485 | struct CadetPeerPath *path; | 471 | struct CadetPeerPath *path; |
486 | struct GNUNET_CONTAINER_HeapNode *hn; | ||
487 | int i; | 472 | int i; |
488 | unsigned int skip; | 473 | unsigned int skip; |
489 | unsigned int total_len; | 474 | unsigned int total_len; |
@@ -501,6 +486,14 @@ GCPP_try_path_from_dht (const struct GNUNET_PeerIdentity *get_path, | |||
501 | pid = (off < get_path_length) | 486 | pid = (off < get_path_length) |
502 | ? &get_path[get_path_length - off - 1] | 487 | ? &get_path[get_path_length - off - 1] |
503 | : &put_path[get_path_length + put_path_length - off - 1]; | 488 | : &put_path[get_path_length + put_path_length - off - 1]; |
489 | /* Check that I am not in the path */ | ||
490 | if (0 == memcmp (&my_full_id, | ||
491 | pid, | ||
492 | sizeof (struct GNUNET_PeerIdentity))) | ||
493 | { | ||
494 | skip = off + 1; | ||
495 | continue; | ||
496 | } | ||
504 | cpath[off - skip] = GCP_get (pid, | 497 | cpath[off - skip] = GCP_get (pid, |
505 | GNUNET_YES); | 498 | GNUNET_YES); |
506 | /* Check that no peer is twice on the path */ | 499 | /* Check that no peer is twice on the path */ |
@@ -513,6 +506,12 @@ GCPP_try_path_from_dht (const struct GNUNET_PeerIdentity *get_path, | |||
513 | } | 506 | } |
514 | } | 507 | } |
515 | } | 508 | } |
509 | if (skip >= total_len) | ||
510 | { | ||
511 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
512 | "Path discovered from DHT is one big cycle?\n"); | ||
513 | return; | ||
514 | } | ||
516 | total_len -= skip; | 515 | total_len -= skip; |
517 | 516 | ||
518 | /* First figure out if this path is a subset of an existing path, an | 517 | /* First figure out if this path is a subset of an existing path, an |
@@ -573,39 +572,17 @@ GCPP_try_path_from_dht (const struct GNUNET_PeerIdentity *get_path, | |||
573 | } | 572 | } |
574 | 573 | ||
575 | /* Finally, try to attach it */ | 574 | /* Finally, try to attach it */ |
576 | hn = NULL; | 575 | attach_path (path, 0); |
577 | for (i=total_len-1;i>=0;i--) | 576 | if (NULL == path->hn) |
578 | { | ||
579 | struct CadetPeerPathEntry *entry = path->entries[i]; | ||
580 | |||
581 | path->entries_length = i + 1; | ||
582 | recalculate_path_desirability (path); | ||
583 | hn = GCP_attach_path (cpath[i], | ||
584 | path, | ||
585 | (unsigned int) i, | ||
586 | GNUNET_NO); | ||
587 | if (NULL != hn) | ||
588 | break; | ||
589 | GCP_path_entry_remove (entry->peer, | ||
590 | entry, | ||
591 | i); | ||
592 | GNUNET_free (entry); | ||
593 | path->entries[i] = NULL; | ||
594 | } | ||
595 | if (NULL == hn) | ||
596 | { | 577 | { |
597 | /* None of the peers on the path care about it. */ | 578 | /* None of the peers on the path care about it. */ |
598 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 579 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
599 | "Path discovered from DHT is not interesting to us\n"); | 580 | "Path discovered from DHT is not interesting to us\n"); |
600 | GNUNET_free (path->entries); | 581 | GNUNET_assert (0 == path->entries_length); |
582 | GNUNET_assert (NULL == path->entries); | ||
601 | GNUNET_free (path); | 583 | GNUNET_free (path); |
602 | return; | 584 | return; |
603 | } | 585 | } |
604 | path->hn = hn; | ||
605 | /* Shrink path to actual useful length */ | ||
606 | GNUNET_array_grow (path->entries, | ||
607 | path->entries_length, | ||
608 | i + 1); | ||
609 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 586 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
610 | "Created new path %s based on information from DHT\n", | 587 | "Created new path %s based on information from DHT\n", |
611 | GCPP_2s (path)); | 588 | GCPP_2s (path)); |
diff --git a/src/cadet/gnunet-service-cadet_peer.c b/src/cadet/gnunet-service-cadet_peer.c index c4e2c0ccf..da78a03c4 100644 --- a/src/cadet/gnunet-service-cadet_peer.c +++ b/src/cadet/gnunet-service-cadet_peer.c | |||
@@ -532,49 +532,32 @@ GCP_set_mq (struct CadetPeer *cp, | |||
532 | GCP_2s (cp), | 532 | GCP_2s (cp), |
533 | mq); | 533 | mq); |
534 | cp->core_mq = mq; | 534 | cp->core_mq = mq; |
535 | /* Since these callbacks can remove any items from this list, we must take a | 535 | for (struct GCP_MessageQueueManager *mqm = cp->mqm_head, *next; |
536 | * snapshot and then test each one to see if it's still in the list. */ | ||
537 | int count = 0; | ||
538 | for (struct GCP_MessageQueueManager *mqm = cp->mqm_head; | ||
539 | NULL != mqm; | 536 | NULL != mqm; |
540 | mqm = mqm->next) | 537 | mqm = next) |
541 | ++count; | ||
542 | struct GCP_MessageQueueManager *mqms[count]; | ||
543 | int i = 0; | ||
544 | for (struct GCP_MessageQueueManager *mqm = cp->mqm_head; | ||
545 | NULL != mqm; | ||
546 | mqm = mqm->next) | ||
547 | mqms[i++] = mqm; | ||
548 | for (i = 0; i < count; ++i) | ||
549 | { | 538 | { |
550 | for (struct GCP_MessageQueueManager *mqm = cp->mqm_head; | 539 | /* Save next pointer in case mqm gets freed by the callback */ |
551 | NULL != mqm; | 540 | next = mqm->next; |
552 | mqm = mqm->next) | 541 | if (NULL == mq) |
553 | { | 542 | { |
554 | if (mqms[i] != mqm) | 543 | if (NULL != mqm->env) |
555 | continue; | ||
556 | if (NULL == mq) | ||
557 | { | 544 | { |
558 | if (NULL != mqm->env) | 545 | GNUNET_MQ_discard (mqm->env); |
559 | { | 546 | mqm->env = NULL; |
560 | GNUNET_MQ_discard (mqm->env); | 547 | mqm->cb (mqm->cb_cls, |
561 | mqm->env = NULL; | 548 | GNUNET_SYSERR); |
562 | mqm->cb (mqm->cb_cls, | ||
563 | GNUNET_SYSERR); | ||
564 | } | ||
565 | else | ||
566 | { | ||
567 | mqm->cb (mqm->cb_cls, | ||
568 | GNUNET_NO); | ||
569 | } | ||
570 | } | 549 | } |
571 | else | 550 | else |
572 | { | 551 | { |
573 | GNUNET_assert (NULL == mqm->env); | ||
574 | mqm->cb (mqm->cb_cls, | 552 | mqm->cb (mqm->cb_cls, |
575 | GNUNET_YES); | 553 | GNUNET_NO); |
576 | } | 554 | } |
577 | break; | 555 | } |
556 | else | ||
557 | { | ||
558 | GNUNET_assert (NULL == mqm->env); | ||
559 | mqm->cb (mqm->cb_cls, | ||
560 | GNUNET_YES); | ||
578 | } | 561 | } |
579 | } | 562 | } |
580 | if ( (NULL != mq) || | 563 | if ( (NULL != mq) || |
@@ -996,7 +979,7 @@ GCP_attach_path (struct CadetPeer *cp, | |||
996 | (desirability < root_desirability) ) | 979 | (desirability < root_desirability) ) |
997 | { | 980 | { |
998 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 981 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
999 | "Decided to not attach path %p to peer %s due to undesirability\n", | 982 | "Decided to not attach path %s to peer %s due to undesirability\n", |
1000 | GCPP_2s (path), | 983 | GCPP_2s (path), |
1001 | GCP_2s (cp)); | 984 | GCP_2s (cp)); |
1002 | return NULL; | 985 | return NULL; |
diff --git a/src/cadet/gnunet-service-cadet_tunnels.c b/src/cadet/gnunet-service-cadet_tunnels.c index 22e19ef70..fb91a4a6a 100644 --- a/src/cadet/gnunet-service-cadet_tunnels.c +++ b/src/cadet/gnunet-service-cadet_tunnels.c | |||
@@ -2856,7 +2856,9 @@ handle_plaintext_channel_destroy (void *cls, | |||
2856 | * | 2856 | * |
2857 | * @param cls the `struct CadetTunnel` that got the message | 2857 | * @param cls the `struct CadetTunnel` that got the message |
2858 | * @param msg the message | 2858 | * @param msg the message |
2859 | * @return #GNUNET_OK (continue to process) | 2859 | * @return #GNUNET_OK on success (always) |
2860 | * #GNUNET_NO to stop further processing (no error) | ||
2861 | * #GNUNET_SYSERR to stop further processing with error | ||
2860 | */ | 2862 | */ |
2861 | static int | 2863 | static int |
2862 | handle_decrypted (void *cls, | 2864 | handle_decrypted (void *cls, |
diff --git a/src/cadet/test_cadet.c b/src/cadet/test_cadet.c index 72df2203c..b9f177652 100644 --- a/src/cadet/test_cadet.c +++ b/src/cadet/test_cadet.c | |||
@@ -58,6 +58,11 @@ struct CadetTestChannelWrapper | |||
58 | #define SHORT_TIME GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 20) | 58 | #define SHORT_TIME GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 20) |
59 | 59 | ||
60 | /** | 60 | /** |
61 | * How fast do we send messages? | ||
62 | */ | ||
63 | #define SEND_INTERVAL GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MILLISECONDS, 10) | ||
64 | |||
65 | /** | ||
61 | * DIFFERENT TESTS TO RUN | 66 | * DIFFERENT TESTS TO RUN |
62 | */ | 67 | */ |
63 | #define SETUP 0 | 68 | #define SETUP 0 |
@@ -269,12 +274,20 @@ show_end_data (void) | |||
269 | 274 | ||
270 | end_time = GNUNET_TIME_absolute_get (); | 275 | end_time = GNUNET_TIME_absolute_get (); |
271 | total_time = GNUNET_TIME_absolute_get_difference (start_time, end_time); | 276 | total_time = GNUNET_TIME_absolute_get_difference (start_time, end_time); |
272 | FPRINTF (stderr, "\nResults of test \"%s\"\n", test_name); | 277 | FPRINTF (stderr, |
273 | FPRINTF (stderr, "Test time %s\n", | 278 | "\nResults of test \"%s\"\n", |
279 | test_name); | ||
280 | FPRINTF (stderr, | ||
281 | "Test time %s\n", | ||
274 | GNUNET_STRINGS_relative_time_to_string (total_time, GNUNET_YES)); | 282 | GNUNET_STRINGS_relative_time_to_string (total_time, GNUNET_YES)); |
275 | FPRINTF (stderr, "Test bandwidth: %f kb/s\n", 4 * total_packets * 1.0 / (total_time.rel_value_us / 1000)); // 4bytes * ms | 283 | FPRINTF (stderr, |
276 | FPRINTF (stderr, "Test throughput: %f packets/s\n\n", total_packets * 1000.0 / (total_time.rel_value_us / 1000)); // packets * ms | 284 | "Test bandwidth: %f kb/s\n", |
277 | GAUGER ("CADET", test_name, | 285 | 4 * total_packets * 1.0 / (total_time.rel_value_us / 1000)); // 4bytes * ms |
286 | FPRINTF (stderr, | ||
287 | "Test throughput: %f packets/s\n\n", | ||
288 | total_packets * 1000.0 / (total_time.rel_value_us / 1000)); // packets * ms | ||
289 | GAUGER ("CADET", | ||
290 | test_name, | ||
278 | total_packets * 1000.0 / (total_time.rel_value_us / 1000), | 291 | total_packets * 1000.0 / (total_time.rel_value_us / 1000), |
279 | "packets/s"); | 292 | "packets/s"); |
280 | } | 293 | } |
@@ -290,13 +303,12 @@ static void | |||
290 | disconnect_cadet_peers (void *cls) | 303 | disconnect_cadet_peers (void *cls) |
291 | { | 304 | { |
292 | long line = (long) cls; | 305 | long line = (long) cls; |
293 | unsigned int i; | ||
294 | 306 | ||
295 | disconnect_task = NULL; | 307 | disconnect_task = NULL; |
296 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 308 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, |
297 | "disconnecting cadet service of peers, called from line %ld\n", | 309 | "disconnecting cadet service of peers, called from line %ld\n", |
298 | line); | 310 | line); |
299 | for (i = 0; i < 2; i++) | 311 | for (unsigned int i = 0; i < 2; i++) |
300 | { | 312 | { |
301 | GNUNET_TESTBED_operation_done (t_op[i]); | 313 | GNUNET_TESTBED_operation_done (t_op[i]); |
302 | } | 314 | } |
@@ -324,7 +336,8 @@ disconnect_cadet_peers (void *cls) | |||
324 | static void | 336 | static void |
325 | shutdown_task (void *cls) | 337 | shutdown_task (void *cls) |
326 | { | 338 | { |
327 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Ending test.\n"); | 339 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
340 | "Ending test.\n"); | ||
328 | if (NULL != send_next_msg_task) | 341 | if (NULL != send_next_msg_task) |
329 | { | 342 | { |
330 | GNUNET_SCHEDULER_cancel (send_next_msg_task); | 343 | GNUNET_SCHEDULER_cancel (send_next_msg_task); |
@@ -339,7 +352,8 @@ shutdown_task (void *cls) | |||
339 | { | 352 | { |
340 | GNUNET_SCHEDULER_cancel (disconnect_task); | 353 | GNUNET_SCHEDULER_cancel (disconnect_task); |
341 | disconnect_task = | 354 | disconnect_task = |
342 | GNUNET_SCHEDULER_add_now (&disconnect_cadet_peers, (void *) __LINE__); | 355 | GNUNET_SCHEDULER_add_now (&disconnect_cadet_peers, |
356 | (void *) __LINE__); | ||
343 | } | 357 | } |
344 | } | 358 | } |
345 | 359 | ||
@@ -354,10 +368,14 @@ shutdown_task (void *cls) | |||
354 | * operation has executed successfully. | 368 | * operation has executed successfully. |
355 | */ | 369 | */ |
356 | static void | 370 | static void |
357 | stats_cont (void *cls, struct GNUNET_TESTBED_Operation *op, const char *emsg) | 371 | stats_cont (void *cls, |
372 | struct GNUNET_TESTBED_Operation *op, | ||
373 | const char *emsg) | ||
358 | { | 374 | { |
359 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, " KA sent: %u, KA received: %u\n", | 375 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, |
360 | ka_sent, ka_received); | 376 | "KA sent: %u, KA received: %u\n", |
377 | ka_sent, | ||
378 | ka_received); | ||
361 | if ((KEEPALIVE == test) && ((ka_sent < 2) || (ka_sent > ka_received + 1))) | 379 | if ((KEEPALIVE == test) && ((ka_sent < 2) || (ka_sent > ka_received + 1))) |
362 | { | 380 | { |
363 | GNUNET_break (0); | 381 | GNUNET_break (0); |
@@ -367,7 +385,8 @@ stats_cont (void *cls, struct GNUNET_TESTBED_Operation *op, const char *emsg) | |||
367 | 385 | ||
368 | if (NULL != disconnect_task) | 386 | if (NULL != disconnect_task) |
369 | GNUNET_SCHEDULER_cancel (disconnect_task); | 387 | GNUNET_SCHEDULER_cancel (disconnect_task); |
370 | disconnect_task = GNUNET_SCHEDULER_add_now (&disconnect_cadet_peers, cls); | 388 | disconnect_task = GNUNET_SCHEDULER_add_now (&disconnect_cadet_peers, |
389 | cls); | ||
371 | } | 390 | } |
372 | 391 | ||
373 | 392 | ||
@@ -438,7 +457,6 @@ gather_stats_and_exit (void *cls) | |||
438 | } | 457 | } |
439 | 458 | ||
440 | 459 | ||
441 | |||
442 | /** | 460 | /** |
443 | * Abort test: schedule disconnect and shutdown immediately | 461 | * Abort test: schedule disconnect and shutdown immediately |
444 | * | 462 | * |
@@ -450,9 +468,12 @@ abort_test (long line) | |||
450 | if (NULL != disconnect_task) | 468 | if (NULL != disconnect_task) |
451 | { | 469 | { |
452 | GNUNET_SCHEDULER_cancel (disconnect_task); | 470 | GNUNET_SCHEDULER_cancel (disconnect_task); |
453 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Aborting test from %ld\n", line); | 471 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, |
472 | "Aborting test from %ld\n", | ||
473 | line); | ||
454 | disconnect_task = | 474 | disconnect_task = |
455 | GNUNET_SCHEDULER_add_now (&disconnect_cadet_peers, (void *) line); | 475 | GNUNET_SCHEDULER_add_now (&disconnect_cadet_peers, |
476 | (void *) line); | ||
456 | } | 477 | } |
457 | } | 478 | } |
458 | 479 | ||
@@ -525,6 +546,7 @@ send_test_message (struct GNUNET_CADET_Channel *channel) | |||
525 | GNUNET_MQ_send (GNUNET_CADET_get_mq (channel), env); | 546 | GNUNET_MQ_send (GNUNET_CADET_get_mq (channel), env); |
526 | } | 547 | } |
527 | 548 | ||
549 | |||
528 | /** | 550 | /** |
529 | * Task to request a new data transmission in a SPEED test, without waiting | 551 | * Task to request a new data transmission in a SPEED test, without waiting |
530 | * for previous messages to be sent/arrrive. | 552 | * for previous messages to be sent/arrrive. |
@@ -537,7 +559,9 @@ send_next_msg (void *cls) | |||
537 | struct GNUNET_CADET_Channel *channel; | 559 | struct GNUNET_CADET_Channel *channel; |
538 | 560 | ||
539 | send_next_msg_task = NULL; | 561 | send_next_msg_task = NULL; |
540 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Sending next message: %d\n", data_sent); | 562 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
563 | "Sending next message: %d\n", | ||
564 | data_sent); | ||
541 | 565 | ||
542 | channel = GNUNET_YES == test_backwards ? incoming_ch : outgoing_ch; | 566 | channel = GNUNET_YES == test_backwards ? incoming_ch : outgoing_ch; |
543 | GNUNET_assert (NULL != channel); | 567 | GNUNET_assert (NULL != channel); |
@@ -550,9 +574,9 @@ send_next_msg (void *cls) | |||
550 | "Scheduling message %d\n", | 574 | "Scheduling message %d\n", |
551 | data_sent + 1); | 575 | data_sent + 1); |
552 | send_next_msg_task = | 576 | send_next_msg_task = |
553 | GNUNET_SCHEDULER_add_delayed(GNUNET_TIME_UNIT_SECONDS, | 577 | GNUNET_SCHEDULER_add_delayed (SEND_INTERVAL, |
554 | &send_next_msg, | 578 | &send_next_msg, |
555 | NULL); | 579 | NULL); |
556 | } | 580 | } |
557 | } | 581 | } |
558 | 582 | ||
@@ -571,7 +595,7 @@ reschedule_timeout_task (long line) | |||
571 | if (NULL != disconnect_task) | 595 | if (NULL != disconnect_task) |
572 | { | 596 | { |
573 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 597 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
574 | " reschedule timeout every 10 messages\n"); | 598 | "reschedule timeout every 10 messages\n"); |
575 | GNUNET_SCHEDULER_cancel (disconnect_task); | 599 | GNUNET_SCHEDULER_cancel (disconnect_task); |
576 | disconnect_task = GNUNET_SCHEDULER_add_delayed (short_time, | 600 | disconnect_task = GNUNET_SCHEDULER_add_delayed (short_time, |
577 | &gather_stats_and_exit, | 601 | &gather_stats_and_exit, |
@@ -605,7 +629,8 @@ check_data (void *cls, const struct GNUNET_MessageHeader *message) | |||
605 | * @param message the actual message | 629 | * @param message the actual message |
606 | */ | 630 | */ |
607 | static void | 631 | static void |
608 | handle_data (void *cls, const struct GNUNET_MessageHeader *message) | 632 | handle_data (void *cls, |
633 | const struct GNUNET_MessageHeader *message) | ||
609 | { | 634 | { |
610 | struct CadetTestChannelWrapper *ch = cls; | 635 | struct CadetTestChannelWrapper *ch = cls; |
611 | struct GNUNET_CADET_Channel *channel = ch->ch; | 636 | struct GNUNET_CADET_Channel *channel = ch->ch; |
@@ -770,19 +795,21 @@ connect_handler (void *cls, struct GNUNET_CADET_Channel *channel, | |||
770 | * @param channel Connection to the other end (henceforth invalid). | 795 | * @param channel Connection to the other end (henceforth invalid). |
771 | */ | 796 | */ |
772 | static void | 797 | static void |
773 | disconnect_handler (void *cls, const struct GNUNET_CADET_Channel *channel) | 798 | disconnect_handler (void *cls, |
799 | const struct GNUNET_CADET_Channel *channel) | ||
774 | { | 800 | { |
775 | struct CadetTestChannelWrapper *ch_w = cls; | 801 | struct CadetTestChannelWrapper *ch_w = cls; |
776 | 802 | ||
777 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Channel disconnected\n"); | 803 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, |
804 | "Channel disconnected at %d\n", | ||
805 | ok); | ||
778 | GNUNET_assert (ch_w->ch == channel); | 806 | GNUNET_assert (ch_w->ch == channel); |
779 | if (channel == incoming_ch) | 807 | if (channel == incoming_ch) |
780 | { | 808 | { |
781 | ok++; | 809 | ok++; |
782 | incoming_ch = NULL; | 810 | incoming_ch = NULL; |
783 | } | 811 | } |
784 | else if (outgoing_ch == channel | 812 | else if (outgoing_ch == channel) |
785 | ) | ||
786 | { | 813 | { |
787 | if (P2P_SIGNAL == test) | 814 | if (P2P_SIGNAL == test) |
788 | { | 815 | { |
@@ -791,15 +818,17 @@ disconnect_handler (void *cls, const struct GNUNET_CADET_Channel *channel) | |||
791 | outgoing_ch = NULL; | 818 | outgoing_ch = NULL; |
792 | } | 819 | } |
793 | else | 820 | else |
794 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Unknown channel! %p\n", channel); | 821 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, |
795 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, " ok: %d\n", ok); | 822 | "Unknown channel! %p\n", |
796 | 823 | channel); | |
797 | if (NULL != disconnect_task) | 824 | if (NULL != disconnect_task) |
798 | { | 825 | { |
799 | GNUNET_SCHEDULER_cancel (disconnect_task); | 826 | GNUNET_SCHEDULER_cancel (disconnect_task); |
800 | disconnect_task = | 827 | disconnect_task = |
801 | GNUNET_SCHEDULER_add_now (&gather_stats_and_exit, (void *) __LINE__); | 828 | GNUNET_SCHEDULER_add_now (&gather_stats_and_exit, |
829 | (void *) __LINE__); | ||
802 | } | 830 | } |
831 | GNUNET_free (ch_w); | ||
803 | } | 832 | } |
804 | 833 | ||
805 | 834 | ||
@@ -879,25 +908,34 @@ start_test (void *cls) | |||
879 | * NULL if the operation is successfull | 908 | * NULL if the operation is successfull |
880 | */ | 909 | */ |
881 | static void | 910 | static void |
882 | pi_cb (void *cls, struct GNUNET_TESTBED_Operation *op, | 911 | pi_cb (void *cls, |
883 | const struct GNUNET_TESTBED_PeerInformation *pinfo, const char *emsg) | 912 | struct GNUNET_TESTBED_Operation *op, |
913 | const struct GNUNET_TESTBED_PeerInformation *pinfo, | ||
914 | const char *emsg) | ||
884 | { | 915 | { |
885 | long i = (long) cls; | 916 | long i = (long) cls; |
886 | 917 | ||
887 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "ID callback for %ld\n", i); | 918 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
888 | 919 | "ID callback for %ld\n", | |
889 | if ((NULL == pinfo) || (NULL != emsg)) | 920 | i); |
921 | if ( (NULL == pinfo) || | ||
922 | (NULL != emsg) ) | ||
890 | { | 923 | { |
891 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "pi_cb: %s\n", emsg); | 924 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, |
925 | "pi_cb: %s\n", | ||
926 | emsg); | ||
892 | abort_test (__LINE__); | 927 | abort_test (__LINE__); |
893 | return; | 928 | return; |
894 | } | 929 | } |
895 | p_id[i] = pinfo->result.id; | 930 | p_id[i] = pinfo->result.id; |
896 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, " id: %s\n", GNUNET_i2s (p_id[i])); | 931 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
932 | "id: %s\n", | ||
933 | GNUNET_i2s (p_id[i])); | ||
897 | p_ids++; | 934 | p_ids++; |
898 | if (p_ids < 2) | 935 | if (p_ids < 2) |
899 | return; | 936 | return; |
900 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Got all IDs, starting test\n"); | 937 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
938 | "Got all IDs, starting test\n"); | ||
901 | test_task = GNUNET_SCHEDULER_add_now (&start_test, NULL); | 939 | test_task = GNUNET_SCHEDULER_add_now (&start_test, NULL); |
902 | } | 940 | } |
903 | 941 | ||
@@ -929,7 +967,8 @@ tmain (void *cls, | |||
929 | disconnect_task = GNUNET_SCHEDULER_add_delayed (short_time, | 967 | disconnect_task = GNUNET_SCHEDULER_add_delayed (short_time, |
930 | &disconnect_cadet_peers, | 968 | &disconnect_cadet_peers, |
931 | (void *) __LINE__); | 969 | (void *) __LINE__); |
932 | GNUNET_SCHEDULER_add_shutdown (&shutdown_task, NULL); | 970 | GNUNET_SCHEDULER_add_shutdown (&shutdown_task, |
971 | NULL); | ||
933 | t_op[0] = GNUNET_TESTBED_peer_get_information (peers[0], | 972 | t_op[0] = GNUNET_TESTBED_peer_get_information (peers[0], |
934 | GNUNET_TESTBED_PIT_IDENTITY, | 973 | GNUNET_TESTBED_PIT_IDENTITY, |
935 | &pi_cb, | 974 | &pi_cb, |
@@ -960,16 +999,16 @@ main (int argc, char *argv[]) | |||
960 | char port_id[] = "test port"; | 999 | char port_id[] = "test port"; |
961 | struct GNUNET_GETOPT_CommandLineOption options[] = { | 1000 | struct GNUNET_GETOPT_CommandLineOption options[] = { |
962 | GNUNET_GETOPT_option_relative_time ('t', | 1001 | GNUNET_GETOPT_option_relative_time ('t', |
963 | "time", | 1002 | "time", |
964 | "short_time", | 1003 | "short_time", |
965 | gettext_noop ("set short timeout"), | 1004 | gettext_noop ("set short timeout"), |
966 | &short_time), | 1005 | &short_time), |
967 | 1006 | ||
968 | GNUNET_GETOPT_option_uint ('m', | 1007 | GNUNET_GETOPT_option_uint ('m', |
969 | "messages", | 1008 | "messages", |
970 | "NUM_MESSAGES", | 1009 | "NUM_MESSAGES", |
971 | gettext_noop ("set number of messages to send"), | 1010 | gettext_noop ("set number of messages to send"), |
972 | &total_packets), | 1011 | &total_packets), |
973 | 1012 | ||
974 | GNUNET_GETOPT_OPTION_END | 1013 | GNUNET_GETOPT_OPTION_END |
975 | }; | 1014 | }; |
diff --git a/src/conversation/gnunet-helper-audio-playback-gst.c b/src/conversation/gnunet-helper-audio-playback-gst.c index 264b14e76..002fed6c7 100644 --- a/src/conversation/gnunet-helper-audio-playback-gst.c +++ b/src/conversation/gnunet-helper-audio-playback-gst.c | |||
@@ -221,6 +221,11 @@ feed_buffer_to_gst (const char *audio, size_t b_len) | |||
221 | 221 | ||
222 | /** | 222 | /** |
223 | * Message callback | 223 | * Message callback |
224 | * | ||
225 | * @param msg message we received. | ||
226 | * @return #GNUNET_OK on success, | ||
227 | * #GNUNET_NO to stop further processing due to disconnect (no error) | ||
228 | * #GNUNET_SYSERR to stop further processing due to error | ||
224 | */ | 229 | */ |
225 | static int | 230 | static int |
226 | stdin_receiver (void *cls, | 231 | stdin_receiver (void *cls, |
diff --git a/src/conversation/gnunet-helper-audio-playback.c b/src/conversation/gnunet-helper-audio-playback.c index 4344e1d41..18f63ad18 100644 --- a/src/conversation/gnunet-helper-audio-playback.c +++ b/src/conversation/gnunet-helper-audio-playback.c | |||
@@ -546,6 +546,11 @@ ogg_demux_and_decode () | |||
546 | 546 | ||
547 | /** | 547 | /** |
548 | * Message callback | 548 | * Message callback |
549 | * | ||
550 | * @param msg message we received. | ||
551 | * @return #GNUNET_OK on success, | ||
552 | * #GNUNET_NO to stop further processing due to disconnect (no error) | ||
553 | * #GNUNET_SYSERR to stop further processing due to error | ||
549 | */ | 554 | */ |
550 | static int | 555 | static int |
551 | stdin_receiver (void *cls, | 556 | stdin_receiver (void *cls, |
diff --git a/src/conversation/gnunet_gst.c b/src/conversation/gnunet_gst.c index 52cb2ccbc..828b35077 100644 --- a/src/conversation/gnunet_gst.c +++ b/src/conversation/gnunet_gst.c | |||
@@ -649,6 +649,11 @@ gnunet_read (GNUNET_gstData * d) | |||
649 | 649 | ||
650 | /** | 650 | /** |
651 | * Message callback | 651 | * Message callback |
652 | * | ||
653 | * @param msg message we received. | ||
654 | * @return #GNUNET_OK on success, | ||
655 | * #GNUNET_NO to stop further processing due to disconnect (no error) | ||
656 | * #GNUNET_SYSERR to stop further processing due to error | ||
652 | */ | 657 | */ |
653 | static int | 658 | static int |
654 | stdin_receiver (void *cls, | 659 | stdin_receiver (void *cls, |
diff --git a/src/conversation/microphone.c b/src/conversation/microphone.c index 7871433a3..11468fc59 100644 --- a/src/conversation/microphone.c +++ b/src/conversation/microphone.c | |||
@@ -65,7 +65,9 @@ struct Microphone | |||
65 | * | 65 | * |
66 | * @param cls clsoure with our `struct Microphone` | 66 | * @param cls clsoure with our `struct Microphone` |
67 | * @param msg the message from the helper | 67 | * @param msg the message from the helper |
68 | * @return #GNUNET_OK on success, #GNUNET_SYSERR on error | 68 | * @return #GNUNET_OK on success, |
69 | * #GNUNET_NO to stop further processing (no error) | ||
70 | * #GNUNET_SYSERR to stop further processing with error | ||
69 | */ | 71 | */ |
70 | static int | 72 | static int |
71 | process_record_messages (void *cls, | 73 | process_record_messages (void *cls, |
diff --git a/src/core/gnunet-service-core.c b/src/core/gnunet-service-core.c index 625bf9655..214f72904 100644 --- a/src/core/gnunet-service-core.c +++ b/src/core/gnunet-service-core.c | |||
@@ -426,6 +426,9 @@ struct TokenizerContext | |||
426 | * | 426 | * |
427 | * @param cls reservation request (`struct TokenizerContext`) | 427 | * @param cls reservation request (`struct TokenizerContext`) |
428 | * @param message the actual message | 428 | * @param message the actual message |
429 | * @return #GNUNET_OK on success, | ||
430 | * #GNUNET_NO to stop further processing (no error) | ||
431 | * #GNUNET_SYSERR to stop further processing with error | ||
429 | */ | 432 | */ |
430 | static int | 433 | static int |
431 | tokenized_cb (void *cls, | 434 | tokenized_cb (void *cls, |
diff --git a/src/core/gnunet-service-core_kx.c b/src/core/gnunet-service-core_kx.c index 8a7cada5c..944d1e692 100644 --- a/src/core/gnunet-service-core_kx.c +++ b/src/core/gnunet-service-core_kx.c | |||
@@ -708,6 +708,9 @@ setup_fresh_ping (struct GSC_KeyExchangeInfo *kx) | |||
708 | * | 708 | * |
709 | * @param cls the `struct GSC_KeyExchangeInfo` | 709 | * @param cls the `struct GSC_KeyExchangeInfo` |
710 | * @param m the message | 710 | * @param m the message |
711 | * @return #GNUNET_OK on success, | ||
712 | * #GNUNET_NO to stop further processing (no error) | ||
713 | * #GNUNET_SYSERR to stop further processing with error | ||
711 | */ | 714 | */ |
712 | static int | 715 | static int |
713 | deliver_message (void *cls, | 716 | deliver_message (void *cls, |
@@ -950,7 +953,7 @@ handle_ephemeral_key (void *cls, | |||
950 | kx->peer, | 953 | kx->peer, |
951 | sizeof (struct GNUNET_PeerIdentity))) | 954 | sizeof (struct GNUNET_PeerIdentity))) |
952 | { | 955 | { |
953 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 956 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, |
954 | "Received EPHEMERAL_KEY from %s, but expected %s\n", | 957 | "Received EPHEMERAL_KEY from %s, but expected %s\n", |
955 | GNUNET_i2s (&m->origin_identity), | 958 | GNUNET_i2s (&m->origin_identity), |
956 | GNUNET_i2s_full (kx->peer)); | 959 | GNUNET_i2s_full (kx->peer)); |
diff --git a/src/core/gnunet-service-core_sessions.c b/src/core/gnunet-service-core_sessions.c index 5d34b7c26..babf169c0 100644 --- a/src/core/gnunet-service-core_sessions.c +++ b/src/core/gnunet-service-core_sessions.c | |||
@@ -147,12 +147,6 @@ struct Session | |||
147 | struct GNUNET_TIME_Relative typemap_delay; | 147 | struct GNUNET_TIME_Relative typemap_delay; |
148 | 148 | ||
149 | /** | 149 | /** |
150 | * Is the neighbour queue empty and thus ready for us | ||
151 | * to transmit an encrypted message? | ||
152 | */ | ||
153 | int ready_to_transmit; | ||
154 | |||
155 | /** | ||
156 | * Is this the first time we're sending the typemap? If so, | 150 | * Is this the first time we're sending the typemap? If so, |
157 | * we want to send it a bit faster the second time. 0 if | 151 | * we want to send it a bit faster the second time. 0 if |
158 | * we are sending for the first time, 1 if not. | 152 | * we are sending for the first time, 1 if not. |
@@ -641,13 +635,7 @@ try_transmission (struct Session *session) | |||
641 | enum GNUNET_CORE_Priority maxpc; | 635 | enum GNUNET_CORE_Priority maxpc; |
642 | struct GSC_ClientActiveRequest *car; | 636 | struct GSC_ClientActiveRequest *car; |
643 | int excess; | 637 | int excess; |
644 | 638 | ||
645 | if (GNUNET_YES != session->ready_to_transmit) | ||
646 | { | ||
647 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
648 | "Not yet ready to transmit, not evaluating queue\n"); | ||
649 | return; | ||
650 | } | ||
651 | msize = 0; | 639 | msize = 0; |
652 | min_deadline = GNUNET_TIME_UNIT_FOREVER_ABS; | 640 | min_deadline = GNUNET_TIME_UNIT_FOREVER_ABS; |
653 | /* if the peer has excess bandwidth, background traffic is allowed, | 641 | /* if the peer has excess bandwidth, background traffic is allowed, |
@@ -801,7 +789,6 @@ try_transmission (struct Session *session) | |||
801 | total_bytes / total_msgs, | 789 | total_bytes / total_msgs, |
802 | GNUNET_NO); | 790 | GNUNET_NO); |
803 | /* now actually transmit... */ | 791 | /* now actually transmit... */ |
804 | session->ready_to_transmit = GNUNET_NO; | ||
805 | GSC_KX_encrypt_and_transmit (session->kx, | 792 | GSC_KX_encrypt_and_transmit (session->kx, |
806 | pbuf, | 793 | pbuf, |
807 | used); | 794 | used); |
@@ -888,10 +875,12 @@ GSC_SESSIONS_solicit (const struct GNUNET_PeerIdentity *pid) | |||
888 | { | 875 | { |
889 | struct Session *session; | 876 | struct Session *session; |
890 | 877 | ||
878 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
879 | "Transport solicits for %s\n", | ||
880 | GNUNET_i2s (pid)); | ||
891 | session = find_session (pid); | 881 | session = find_session (pid); |
892 | if (NULL == session) | 882 | if (NULL == session) |
893 | return; | 883 | return; |
894 | session->ready_to_transmit = GNUNET_YES; | ||
895 | try_transmission (session); | 884 | try_transmission (session); |
896 | } | 885 | } |
897 | 886 | ||
diff --git a/src/dht/Makefile.am b/src/dht/Makefile.am index 4a78ea4c7..d60ff62d6 100644 --- a/src/dht/Makefile.am +++ b/src/dht/Makefile.am | |||
@@ -197,6 +197,7 @@ test_dht_monitor_LDADD = \ | |||
197 | 197 | ||
198 | EXTRA_DIST = \ | 198 | EXTRA_DIST = \ |
199 | $(check_SCRIPTS) \ | 199 | $(check_SCRIPTS) \ |
200 | gnunet-service-dht_clients.c \ | ||
200 | test_dht_api_data.conf \ | 201 | test_dht_api_data.conf \ |
201 | test_dht_api_peer1.conf \ | 202 | test_dht_api_peer1.conf \ |
202 | test_dht_monitor.conf \ | 203 | test_dht_monitor.conf \ |
diff --git a/src/dht/gnunet-service-dht.c b/src/dht/gnunet-service-dht.c index f2b922dc4..829c53aea 100644 --- a/src/dht/gnunet-service-dht.c +++ b/src/dht/gnunet-service-dht.c | |||
@@ -55,7 +55,6 @@ static struct GNUNET_TRANSPORT_HelloGetHandle *ghh; | |||
55 | struct GNUNET_TIME_Relative hello_expiration; | 55 | struct GNUNET_TIME_Relative hello_expiration; |
56 | 56 | ||
57 | 57 | ||
58 | /* Code shared between different DHT implementations */ | ||
59 | #include "gnunet-service-dht_clients.c" | 58 | #include "gnunet-service-dht_clients.c" |
60 | 59 | ||
61 | 60 | ||
diff --git a/src/fs/fs_dirmetascan.c b/src/fs/fs_dirmetascan.c index 7b9f178fd..8a3e37b49 100644 --- a/src/fs/fs_dirmetascan.c +++ b/src/fs/fs_dirmetascan.c | |||
@@ -246,6 +246,9 @@ finish_scan (void *cls) | |||
246 | * | 246 | * |
247 | * @param cls the closure (directory scanner object) | 247 | * @param cls the closure (directory scanner object) |
248 | * @param msg message from the helper process | 248 | * @param msg message from the helper process |
249 | * @return #GNUNET_OK on success, | ||
250 | * #GNUNET_NO to stop further processing (no error) | ||
251 | * #GNUNET_SYSERR to stop further processing with error | ||
249 | */ | 252 | */ |
250 | static int | 253 | static int |
251 | process_helper_msgs (void *cls, | 254 | process_helper_msgs (void *cls, |
diff --git a/src/fs/test_fs_download_persistence.c b/src/fs/test_fs_download_persistence.c index 76a1ea911..8f27e82af 100644 --- a/src/fs/test_fs_download_persistence.c +++ b/src/fs/test_fs_download_persistence.c | |||
@@ -179,7 +179,6 @@ progress_cb (void *cls, const struct GNUNET_FS_ProgressInfo *event) | |||
179 | GNUNET_FS_DOWNLOAD_OPTION_NONE, "download", NULL); | 179 | GNUNET_FS_DOWNLOAD_OPTION_NONE, "download", NULL); |
180 | break; | 180 | break; |
181 | case GNUNET_FS_STATUS_DOWNLOAD_COMPLETED: | 181 | case GNUNET_FS_STATUS_DOWNLOAD_COMPLETED: |
182 | consider_restart (event->status); | ||
183 | printf ("Download complete, %llu kbps.\n", | 182 | printf ("Download complete, %llu kbps.\n", |
184 | (unsigned long long) (FILESIZE * 1000000LL / | 183 | (unsigned long long) (FILESIZE * 1000000LL / |
185 | (1 + | 184 | (1 + |
diff --git a/src/fs/test_fs_publish_persistence.c b/src/fs/test_fs_publish_persistence.c index be9006d42..103ca01b8 100644 --- a/src/fs/test_fs_publish_persistence.c +++ b/src/fs/test_fs_publish_persistence.c | |||
@@ -134,7 +134,6 @@ progress_cb (void *cls, | |||
134 | switch (event->status) | 134 | switch (event->status) |
135 | { | 135 | { |
136 | case GNUNET_FS_STATUS_PUBLISH_COMPLETED: | 136 | case GNUNET_FS_STATUS_PUBLISH_COMPLETED: |
137 | consider_restart (event->status); | ||
138 | ret = event->value.publish.cctx; | 137 | ret = event->value.publish.cctx; |
139 | printf ("Publish complete, %llu kbps.\n", | 138 | printf ("Publish complete, %llu kbps.\n", |
140 | (unsigned long long) (FILESIZE * 1000000LL / | 139 | (unsigned long long) (FILESIZE * 1000000LL / |
diff --git a/src/hello/hello.c b/src/hello/hello.c index 27580275f..690a0961a 100644 --- a/src/hello/hello.c +++ b/src/hello/hello.c | |||
@@ -271,7 +271,10 @@ GNUNET_HELLO_iterate_addresses (const struct GNUNET_HELLO_Message *msg, | |||
271 | msize = GNUNET_HELLO_size (msg); | 271 | msize = GNUNET_HELLO_size (msg); |
272 | if ((msize < sizeof (struct GNUNET_HELLO_Message)) || | 272 | if ((msize < sizeof (struct GNUNET_HELLO_Message)) || |
273 | (ntohs (msg->header.type) != GNUNET_MESSAGE_TYPE_HELLO)) | 273 | (ntohs (msg->header.type) != GNUNET_MESSAGE_TYPE_HELLO)) |
274 | { | ||
275 | GNUNET_break_op (0); | ||
274 | return NULL; | 276 | return NULL; |
277 | } | ||
275 | ret = NULL; | 278 | ret = NULL; |
276 | if (return_modified) | 279 | if (return_modified) |
277 | { | 280 | { |
@@ -285,6 +288,10 @@ GNUNET_HELLO_iterate_addresses (const struct GNUNET_HELLO_Message *msg, | |||
285 | wpos = 0; | 288 | wpos = 0; |
286 | woff = (NULL != ret) ? (char *) &ret[1] : NULL; | 289 | woff = (NULL != ret) ? (char *) &ret[1] : NULL; |
287 | address.peer.public_key = msg->publicKey; | 290 | address.peer.public_key = msg->publicKey; |
291 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
292 | "HELLO has %u bytes of address data\n", | ||
293 | (unsigned int) insize); | ||
294 | |||
288 | while (insize > 0) | 295 | while (insize > 0) |
289 | { | 296 | { |
290 | esize = get_hello_address_size (inptr, | 297 | esize = get_hello_address_size (inptr, |
diff --git a/src/include/Makefile.am b/src/include/Makefile.am index e5abec416..08e9dd156 100644 --- a/src/include/Makefile.am +++ b/src/include/Makefile.am | |||
@@ -33,6 +33,7 @@ gnunetinclude_HEADERS = \ | |||
33 | gnunet_bandwidth_lib.h \ | 33 | gnunet_bandwidth_lib.h \ |
34 | gnunet_bio_lib.h \ | 34 | gnunet_bio_lib.h \ |
35 | gnunet_block_lib.h \ | 35 | gnunet_block_lib.h \ |
36 | gnunet_block_group_lib.h \ | ||
36 | gnunet_block_plugin.h \ | 37 | gnunet_block_plugin.h \ |
37 | gnunet_client_lib.h \ | 38 | gnunet_client_lib.h \ |
38 | gnunet_common.h \ | 39 | gnunet_common.h \ |
@@ -65,7 +66,10 @@ gnunetinclude_HEADERS = \ | |||
65 | gnunet_hello_lib.h \ | 66 | gnunet_hello_lib.h \ |
66 | gnunet_helper_lib.h \ | 67 | gnunet_helper_lib.h \ |
67 | gnunet_identity_service.h \ | 68 | gnunet_identity_service.h \ |
69 | gnunet_identity_provider_service.h \ | ||
68 | gnunet_json_lib.h \ | 70 | gnunet_json_lib.h \ |
71 | gnunet_jsonapi_lib.h \ | ||
72 | gnunet_jsonapi_util.h \ | ||
69 | gnunet_load_lib.h \ | 73 | gnunet_load_lib.h \ |
70 | gnunet_cadet_service.h \ | 74 | gnunet_cadet_service.h \ |
71 | gnunet_microphone_lib.h \ | 75 | gnunet_microphone_lib.h \ |
@@ -102,6 +106,8 @@ gnunetinclude_HEADERS = \ | |||
102 | gnunet_protocols.h \ | 106 | gnunet_protocols.h \ |
103 | gnunet_resolver_service.h \ | 107 | gnunet_resolver_service.h \ |
104 | gnunet_regex_service.h \ | 108 | gnunet_regex_service.h \ |
109 | gnunet_rest_lib.h \ | ||
110 | gnunet_rest_plugin.h \ | ||
105 | gnunet_revocation_service.h \ | 111 | gnunet_revocation_service.h \ |
106 | gnunet_scalarproduct_service.h \ | 112 | gnunet_scalarproduct_service.h \ |
107 | gnunet_scheduler_lib.h \ | 113 | gnunet_scheduler_lib.h \ |
@@ -111,6 +117,7 @@ gnunetinclude_HEADERS = \ | |||
111 | gnunet_signal_lib.h \ | 117 | gnunet_signal_lib.h \ |
112 | gnunet_signatures.h \ | 118 | gnunet_signatures.h \ |
113 | gnunet_social_service.h \ | 119 | gnunet_social_service.h \ |
120 | gnunet_socks.h \ | ||
114 | gnunet_speaker_lib.h \ | 121 | gnunet_speaker_lib.h \ |
115 | gnunet_sq_lib.h \ | 122 | gnunet_sq_lib.h \ |
116 | gnunet_statistics_service.h \ | 123 | gnunet_statistics_service.h \ |
diff --git a/src/include/gnunet_common.h b/src/include/gnunet_common.h index d7f7b76ff..7d23e6f9b 100644 --- a/src/include/gnunet_common.h +++ b/src/include/gnunet_common.h | |||
@@ -988,7 +988,8 @@ GNUNET_ntoh_double (double d); | |||
988 | * arr is important since size is the number of elements and | 988 | * arr is important since size is the number of elements and |
989 | * not the size in bytes | 989 | * not the size in bytes |
990 | * @param size the number of elements in the existing vector (number | 990 | * @param size the number of elements in the existing vector (number |
991 | * of elements to copy over) | 991 | * of elements to copy over), will be updated with the new |
992 | * array size | ||
992 | * @param tsize the target size for the resulting vector, use 0 to | 993 | * @param tsize the target size for the resulting vector, use 0 to |
993 | * free the vector (then, arr will be NULL afterwards). | 994 | * free the vector (then, arr will be NULL afterwards). |
994 | */ | 995 | */ |
@@ -996,8 +997,16 @@ GNUNET_ntoh_double (double d); | |||
996 | 997 | ||
997 | /** | 998 | /** |
998 | * @ingroup memory | 999 | * @ingroup memory |
999 | * Append an element to a list (growing the | 1000 | * Append an element to a list (growing the list by one). |
1000 | * list by one). | 1001 | * |
1002 | * @param arr base-pointer of the vector, may be NULL if size is 0; | ||
1003 | * will be updated to reflect the new address. The TYPE of | ||
1004 | * arr is important since size is the number of elements and | ||
1005 | * not the size in bytes | ||
1006 | * @param size the number of elements in the existing vector (number | ||
1007 | * of elements to copy over), will be updated with the new | ||
1008 | * array size | ||
1009 | * @param element the element that will be appended to the array | ||
1001 | */ | 1010 | */ |
1002 | #define GNUNET_array_append(arr,size,element) do { GNUNET_array_grow(arr,size,size+1); arr[size-1] = element; } while(0) | 1011 | #define GNUNET_array_append(arr,size,element) do { GNUNET_array_grow(arr,size,size+1); arr[size-1] = element; } while(0) |
1003 | 1012 | ||
diff --git a/src/include/gnunet_mst_lib.h b/src/include/gnunet_mst_lib.h index 7a1ca7a55..fe6524eb3 100644 --- a/src/include/gnunet_mst_lib.h +++ b/src/include/gnunet_mst_lib.h | |||
@@ -61,7 +61,9 @@ struct GNUNET_MessageStreamTokenizer; | |||
61 | * | 61 | * |
62 | * @param cls closure | 62 | * @param cls closure |
63 | * @param message the actual message | 63 | * @param message the actual message |
64 | * @return #GNUNET_OK on success, #GNUNET_SYSERR to stop further processing | 64 | * @return #GNUNET_OK on success, |
65 | * #GNUNET_NO to stop further processing due to disconnect (no error) | ||
66 | * #GNUNET_SYSERR to stop further processing due to error | ||
65 | */ | 67 | */ |
66 | typedef int | 68 | typedef int |
67 | (*GNUNET_MessageTokenizerCallback) (void *cls, | 69 | (*GNUNET_MessageTokenizerCallback) (void *cls, |
diff --git a/src/include/gnunet_network_lib.h b/src/include/gnunet_network_lib.h index d9d3d90e7..9e692bbbf 100644 --- a/src/include/gnunet_network_lib.h +++ b/src/include/gnunet_network_lib.h | |||
@@ -464,7 +464,7 @@ GNUNET_NETWORK_fdset_copy (struct GNUNET_NETWORK_FDSet *to, | |||
464 | * @return POSIX file descriptor | 464 | * @return POSIX file descriptor |
465 | */ | 465 | */ |
466 | int | 466 | int |
467 | GNUNET_NETWORK_get_fd (struct GNUNET_NETWORK_Handle *desc); | 467 | GNUNET_NETWORK_get_fd (const struct GNUNET_NETWORK_Handle *desc); |
468 | 468 | ||
469 | 469 | ||
470 | /** | 470 | /** |
@@ -474,7 +474,7 @@ GNUNET_NETWORK_get_fd (struct GNUNET_NETWORK_Handle *desc); | |||
474 | * @return POSIX file descriptor | 474 | * @return POSIX file descriptor |
475 | */ | 475 | */ |
476 | struct sockaddr* | 476 | struct sockaddr* |
477 | GNUNET_NETWORK_get_addr (struct GNUNET_NETWORK_Handle *desc); | 477 | GNUNET_NETWORK_get_addr (const struct GNUNET_NETWORK_Handle *desc); |
478 | 478 | ||
479 | 479 | ||
480 | /** | 480 | /** |
@@ -484,7 +484,7 @@ GNUNET_NETWORK_get_addr (struct GNUNET_NETWORK_Handle *desc); | |||
484 | * @return socklen_t for sockaddr | 484 | * @return socklen_t for sockaddr |
485 | */ | 485 | */ |
486 | socklen_t | 486 | socklen_t |
487 | GNUNET_NETWORK_get_addrlen (struct GNUNET_NETWORK_Handle *desc); | 487 | GNUNET_NETWORK_get_addrlen (const struct GNUNET_NETWORK_Handle *desc); |
488 | 488 | ||
489 | 489 | ||
490 | /** | 490 | /** |
diff --git a/src/include/gnunet_protocols.h b/src/include/gnunet_protocols.h index 6710d749f..436adc5a4 100644 --- a/src/include/gnunet_protocols.h +++ b/src/include/gnunet_protocols.h | |||
@@ -2067,7 +2067,11 @@ extern "C" | |||
2067 | /** S->C: slave join acknowledgement */ | 2067 | /** S->C: slave join acknowledgement */ |
2068 | #define GNUNET_MESSAGE_TYPE_PSYC_SLAVE_JOIN_ACK 684 | 2068 | #define GNUNET_MESSAGE_TYPE_PSYC_SLAVE_JOIN_ACK 684 |
2069 | 2069 | ||
2070 | /* 685-686 */ | 2070 | /** C->S: request to part from a channel */ |
2071 | #define GNUNET_MESSAGE_TYPE_PSYC_PART_REQUEST 685 | ||
2072 | |||
2073 | /** S->C: acknowledgement that a slave of master parted from a channel */ | ||
2074 | #define GNUNET_MESSAGE_TYPE_PSYC_PART_ACK 686 | ||
2071 | 2075 | ||
2072 | /** M->S->C: incoming join request from multicast */ | 2076 | /** M->S->C: incoming join request from multicast */ |
2073 | #define GNUNET_MESSAGE_TYPE_PSYC_JOIN_REQUEST 687 | 2077 | #define GNUNET_MESSAGE_TYPE_PSYC_JOIN_REQUEST 687 |
@@ -2258,6 +2262,7 @@ extern "C" | |||
2258 | */ | 2262 | */ |
2259 | #define GNUNET_MESSAGE_TYPE_MULTICAST_PART_ACK 755 | 2263 | #define GNUNET_MESSAGE_TYPE_MULTICAST_PART_ACK 755 |
2260 | 2264 | ||
2265 | // FIXME: this is never used! | ||
2261 | /** | 2266 | /** |
2262 | * Group terminated. | 2267 | * Group terminated. |
2263 | */ | 2268 | */ |
@@ -2398,35 +2403,38 @@ extern "C" | |||
2398 | /** C->S: request to leave a place */ | 2403 | /** C->S: request to leave a place */ |
2399 | #define GNUNET_MESSAGE_TYPE_SOCIAL_PLACE_LEAVE 848 | 2404 | #define GNUNET_MESSAGE_TYPE_SOCIAL_PLACE_LEAVE 848 |
2400 | 2405 | ||
2406 | /** S->C: place leave acknowledgement */ | ||
2407 | #define GNUNET_MESSAGE_TYPE_SOCIAL_PLACE_LEAVE_ACK 849 | ||
2408 | |||
2401 | /** C->S: add place to GNS zone */ | 2409 | /** C->S: add place to GNS zone */ |
2402 | #define GNUNET_MESSAGE_TYPE_SOCIAL_ZONE_ADD_PLACE 849 | 2410 | #define GNUNET_MESSAGE_TYPE_SOCIAL_ZONE_ADD_PLACE 850 |
2403 | 2411 | ||
2404 | /** C->S: add nym to GNS zone */ | 2412 | /** C->S: add nym to GNS zone */ |
2405 | #define GNUNET_MESSAGE_TYPE_SOCIAL_ZONE_ADD_NYM 850 | 2413 | #define GNUNET_MESSAGE_TYPE_SOCIAL_ZONE_ADD_NYM 851 |
2406 | 2414 | ||
2407 | /** C->S: connect application */ | 2415 | /** C->S: connect application */ |
2408 | #define GNUNET_MESSAGE_TYPE_SOCIAL_APP_CONNECT 851 | 2416 | #define GNUNET_MESSAGE_TYPE_SOCIAL_APP_CONNECT 852 |
2409 | 2417 | ||
2410 | /** C->S: detach a place from application */ | 2418 | /** C->S: detach a place from application */ |
2411 | #define GNUNET_MESSAGE_TYPE_SOCIAL_APP_DETACH 852 | 2419 | #define GNUNET_MESSAGE_TYPE_SOCIAL_APP_DETACH 853 |
2412 | 2420 | ||
2413 | /** S->C: notify about an existing ego */ | 2421 | /** S->C: notify about an existing ego */ |
2414 | #define GNUNET_MESSAGE_TYPE_SOCIAL_APP_EGO 853 | 2422 | #define GNUNET_MESSAGE_TYPE_SOCIAL_APP_EGO 854 |
2415 | 2423 | ||
2416 | /** S->C: end of ego list */ | 2424 | /** S->C: end of ego list */ |
2417 | #define GNUNET_MESSAGE_TYPE_SOCIAL_APP_EGO_END 854 | 2425 | #define GNUNET_MESSAGE_TYPE_SOCIAL_APP_EGO_END 855 |
2418 | 2426 | ||
2419 | /** S->C: notify about an existing place */ | 2427 | /** S->C: notify about an existing place */ |
2420 | #define GNUNET_MESSAGE_TYPE_SOCIAL_APP_PLACE 855 | 2428 | #define GNUNET_MESSAGE_TYPE_SOCIAL_APP_PLACE 856 |
2421 | 2429 | ||
2422 | /** S->C: end of place list */ | 2430 | /** S->C: end of place list */ |
2423 | #define GNUNET_MESSAGE_TYPE_SOCIAL_APP_PLACE_END 856 | 2431 | #define GNUNET_MESSAGE_TYPE_SOCIAL_APP_PLACE_END 857 |
2424 | 2432 | ||
2425 | /** C->S: set message processing flags */ | 2433 | /** C->S: set message processing flags */ |
2426 | #define GNUNET_MESSAGE_TYPE_SOCIAL_MSG_PROC_SET 860 | 2434 | #define GNUNET_MESSAGE_TYPE_SOCIAL_MSG_PROC_SET 858 |
2427 | 2435 | ||
2428 | /** C->S: clear message processing flags */ | 2436 | /** C->S: clear message processing flags */ |
2429 | #define GNUNET_MESSAGE_TYPE_SOCIAL_MSG_PROC_CLEAR 861 | 2437 | #define GNUNET_MESSAGE_TYPE_SOCIAL_MSG_PROC_CLEAR 859 |
2430 | 2438 | ||
2431 | /******************************************************************************* | 2439 | /******************************************************************************* |
2432 | * X-VINE DHT messages | 2440 | * X-VINE DHT messages |
diff --git a/src/include/gnunet_rest_lib.h b/src/include/gnunet_rest_lib.h index 243c38403..a4dbb0696 100644 --- a/src/include/gnunet_rest_lib.h +++ b/src/include/gnunet_rest_lib.h | |||
@@ -32,7 +32,7 @@ | |||
32 | #define GNUNET_REST_LIB_H | 32 | #define GNUNET_REST_LIB_H |
33 | 33 | ||
34 | #include "gnunet_util_lib.h" | 34 | #include "gnunet_util_lib.h" |
35 | #include "microhttpd.h" | 35 | #include <microhttpd.h> |
36 | 36 | ||
37 | #define GNUNET_REST_HANDLER_END {NULL, NULL, NULL} | 37 | #define GNUNET_REST_HANDLER_END {NULL, NULL, NULL} |
38 | 38 | ||
diff --git a/src/include/gnunet_scheduler_lib.h b/src/include/gnunet_scheduler_lib.h index a855ab8ab..d2805a685 100644 --- a/src/include/gnunet_scheduler_lib.h +++ b/src/include/gnunet_scheduler_lib.h | |||
@@ -152,14 +152,14 @@ struct GNUNET_SCHEDULER_FdInfo | |||
152 | * NULL if this is about a file handle or if no network | 152 | * NULL if this is about a file handle or if no network |
153 | * handle was given to the scheduler originally. | 153 | * handle was given to the scheduler originally. |
154 | */ | 154 | */ |
155 | struct GNUNET_NETWORK_Handle *fd; | 155 | const struct GNUNET_NETWORK_Handle *fd; |
156 | 156 | ||
157 | /** | 157 | /** |
158 | * GNUnet file handle the event is about, matches @a sock, | 158 | * GNUnet file handle the event is about, matches @a sock, |
159 | * NULL if this is about a network socket or if no network | 159 | * NULL if this is about a network socket or if no network |
160 | * handle was given to the scheduler originally. | 160 | * handle was given to the scheduler originally. |
161 | */ | 161 | */ |
162 | struct GNUNET_DISK_FileHandle *fh; | 162 | const struct GNUNET_DISK_FileHandle *fh; |
163 | 163 | ||
164 | /** | 164 | /** |
165 | * Type of the event that was generated related to @e sock. | 165 | * Type of the event that was generated related to @e sock. |
@@ -216,17 +216,18 @@ struct GNUNET_SCHEDULER_TaskContext | |||
216 | 216 | ||
217 | /** | 217 | /** |
218 | * Function used by event-loop implementations to signal the scheduler | 218 | * Function used by event-loop implementations to signal the scheduler |
219 | * that a particular @a task is ready due to an event of type @a et. | 219 | * that a particular @a task is ready due to an event specified in the |
220 | * et field of @a fdi. | ||
220 | * | 221 | * |
221 | * This function will then queue the task to notify the application | 222 | * This function will then queue the task to notify the application |
222 | * that the task is ready (with the respective priority). | 223 | * that the task is ready (with the respective priority). |
223 | * | 224 | * |
224 | * @param task the task that is ready | 225 | * @param task the task that is ready |
225 | * @param et information about why the task is ready | 226 | * @param fdi information about the related FD |
226 | */ | 227 | */ |
227 | void | 228 | void |
228 | GNUNET_SCHEDULER_task_ready (struct GNUNET_SCHEDULER_Task *task, | 229 | GNUNET_SCHEDULER_task_ready (struct GNUNET_SCHEDULER_Task *task, |
229 | enum GNUNET_SCHEDULER_EventType et); | 230 | struct GNUNET_SCHEDULER_FdInfo *fdi); |
230 | 231 | ||
231 | 232 | ||
232 | /** | 233 | /** |
@@ -241,15 +242,16 @@ struct GNUNET_SCHEDULER_Handle; | |||
241 | * there are tasks left to run just to give other tasks a chance as | 242 | * there are tasks left to run just to give other tasks a chance as |
242 | * well. If we return #GNUNET_YES, the driver should call this | 243 | * well. If we return #GNUNET_YES, the driver should call this |
243 | * function again as soon as possible, while if we return #GNUNET_NO | 244 | * function again as soon as possible, while if we return #GNUNET_NO |
244 | * it must block until the operating system has more work as the | 245 | * it must block until either the operating system has more work (the |
245 | * scheduler has no more work to do right now. | 246 | * scheduler has no more work to do right now) or the timeout set by |
247 | * the scheduler (using the set_wakeup callback) is reached. | ||
246 | * | 248 | * |
247 | * @param sh scheduler handle that was given to the `loop` | 249 | * @param sh scheduler handle that was given to the `loop` |
248 | * @return #GNUNET_OK if there are more tasks that are ready, | 250 | * @return #GNUNET_OK if there are more tasks that are ready, |
249 | * and thus we would like to run more (yield to avoid | 251 | * and thus we would like to run more (yield to avoid |
250 | * blocking other activities for too long) | 252 | * blocking other activities for too long) |
251 | * #GNUNET_NO if we are done running tasks (yield to block) | 253 | * #GNUNET_NO if we are done running tasks (yield to block) |
252 | * #GNUNET_SYSERR on error | 254 | * #GNUNET_SYSERR on error, e.g. no tasks were ready |
253 | */ | 255 | */ |
254 | int | 256 | int |
255 | GNUNET_SCHEDULER_run_from_driver (struct GNUNET_SCHEDULER_Handle *sh); | 257 | GNUNET_SCHEDULER_run_from_driver (struct GNUNET_SCHEDULER_Handle *sh); |
@@ -268,8 +270,11 @@ struct GNUNET_SCHEDULER_Driver | |||
268 | void *cls; | 270 | void *cls; |
269 | 271 | ||
270 | /** | 272 | /** |
271 | * Add a @a task to be run if the conditions given | 273 | * Add a @a task to be run if the conditions specified in the |
272 | * in @a fdi are satisfied. | 274 | * et field of the given @a fdi are satisfied. The et field will |
275 | * be cleared after this call and the driver is expected to set | ||
276 | * the type of the actual event before passing @a fdi to | ||
277 | * #GNUNET_SCHEDULER_task_ready. | ||
273 | * | 278 | * |
274 | * @param cls closure | 279 | * @param cls closure |
275 | * @param task task to add | 280 | * @param task task to add |
@@ -280,21 +285,21 @@ struct GNUNET_SCHEDULER_Driver | |||
280 | int | 285 | int |
281 | (*add)(void *cls, | 286 | (*add)(void *cls, |
282 | struct GNUNET_SCHEDULER_Task *task, | 287 | struct GNUNET_SCHEDULER_Task *task, |
283 | struct GNUNET_SCHEDULER_FdInfo *fdi); | 288 | struct GNUNET_SCHEDULER_FdInfo *fdi); |
284 | 289 | ||
285 | /** | 290 | /** |
286 | * Delete a @a task from the set of tasks to be run. | 291 | * Delete a @a task from the set of tasks to be run. A task may |
292 | * comprise multiple FdInfo entries previously added with the add | ||
293 | * function. The driver is expected to delete them all. | ||
287 | * | 294 | * |
288 | * @param cls closure | 295 | * @param cls closure |
289 | * @param task task to delete | 296 | * @param task task to delete |
290 | * @param fdi conditions to watch for (must match @e add call) | ||
291 | * @return #GNUNET_OK on success, #GNUNET_SYSERR on failure | 297 | * @return #GNUNET_OK on success, #GNUNET_SYSERR on failure |
292 | * (i.e. @a task or @a fdi do not match prior @e add call) | 298 | * (i.e. @a task does not match prior @e add call) |
293 | */ | 299 | */ |
294 | int | 300 | int |
295 | (*del)(void *cls, | 301 | (*del)(void *cls, |
296 | struct GNUNET_SCHEDULER_Task *task, | 302 | struct GNUNET_SCHEDULER_Task *task); |
297 | const struct GNUNET_SCHEDULER_FdInfo *fdi); | ||
298 | 303 | ||
299 | /** | 304 | /** |
300 | * Set time at which we definitively want to get a wakeup call. | 305 | * Set time at which we definitively want to get a wakeup call. |
@@ -309,7 +314,10 @@ struct GNUNET_SCHEDULER_Driver | |||
309 | /** | 314 | /** |
310 | * Event loop's "main" function, to be called from | 315 | * Event loop's "main" function, to be called from |
311 | * #GNUNET_SCHEDULER_run_with_driver() to actually | 316 | * #GNUNET_SCHEDULER_run_with_driver() to actually |
312 | * launch the loop. | 317 | * launch the loop. The loop should run as long as |
318 | * tasks (added by the add callback) are available | ||
319 | * OR the wakeup time (added by the set_wakeup | ||
320 | * callback) is not FOREVER. | ||
313 | * | 321 | * |
314 | * @param cls closure | 322 | * @param cls closure |
315 | * @param sh scheduler handle to pass to | 323 | * @param sh scheduler handle to pass to |
@@ -359,7 +367,7 @@ GNUNET_SCHEDULER_run_with_driver (const struct GNUNET_SCHEDULER_Driver *driver, | |||
359 | * | 367 | * |
360 | * @return NULL on error | 368 | * @return NULL on error |
361 | */ | 369 | */ |
362 | const struct GNUNET_SCHEDULER_Driver * | 370 | struct GNUNET_SCHEDULER_Driver * |
363 | GNUNET_SCHEDULER_driver_select (void); | 371 | GNUNET_SCHEDULER_driver_select (void); |
364 | 372 | ||
365 | 373 | ||
diff --git a/src/include/gnunet_service_lib.h b/src/include/gnunet_service_lib.h index aacafe956..dda827c95 100644 --- a/src/include/gnunet_service_lib.h +++ b/src/include/gnunet_service_lib.h | |||
@@ -366,11 +366,16 @@ GNUNET_SERVICE_client_disable_continue_warning (struct GNUNET_SERVICE_Client *c) | |||
366 | /** | 366 | /** |
367 | * Ask the server to disconnect from the given client. This is the | 367 | * Ask the server to disconnect from the given client. This is the |
368 | * same as returning #GNUNET_SYSERR within the check procedure when | 368 | * same as returning #GNUNET_SYSERR within the check procedure when |
369 | * handling a message, wexcept that it allows dropping of a client even | 369 | * handling a message, except that it allows dropping of a client even |
370 | * when not handling a message from that client. The `disconnect_cb` | 370 | * when not handling a message from that client. The `disconnect_cb` |
371 | * will be called on @a c even if the application closes the connection | 371 | * will be called on @a c even if the application closes the connection |
372 | * using this function. | 372 | * using this function. |
373 | * | 373 | * |
374 | * This function should be called (outside of util's internal logic) | ||
375 | * if (and usually only if) the client has violated the | ||
376 | * protocol. Otherwise, we should leave it to the client to disconnect | ||
377 | * from the service. | ||
378 | * | ||
374 | * @param c client to disconnect now | 379 | * @param c client to disconnect now |
375 | */ | 380 | */ |
376 | void | 381 | void |
diff --git a/src/jsonapi/Makefile.am b/src/jsonapi/Makefile.am index 3cf3a4cd2..054d3c550 100644 --- a/src/jsonapi/Makefile.am +++ b/src/jsonapi/Makefile.am | |||
@@ -24,7 +24,7 @@ libgnunetjsonapi_la_LDFLAGS = \ | |||
24 | -version-info 0:0:0 \ | 24 | -version-info 0:0:0 \ |
25 | -no-undefined | 25 | -no-undefined |
26 | libgnunetjsonapi_la_SOURCES = \ | 26 | libgnunetjsonapi_la_SOURCES = \ |
27 | jsonapi_document.c \ | 27 | jsonapi_document.c jsonapi_objects.h \ |
28 | jsonapi_resource.c \ | 28 | jsonapi_resource.c \ |
29 | jsonapi_error.c \ | 29 | jsonapi_error.c \ |
30 | jsonapi_relationship.c | 30 | jsonapi_relationship.c |
diff --git a/src/multicast/Makefile.am b/src/multicast/Makefile.am index 13212bca3..48185e1a4 100644 --- a/src/multicast/Makefile.am +++ b/src/multicast/Makefile.am | |||
@@ -19,7 +19,7 @@ endif | |||
19 | lib_LTLIBRARIES = libgnunetmulticast.la | 19 | lib_LTLIBRARIES = libgnunetmulticast.la |
20 | 20 | ||
21 | libgnunetmulticast_la_SOURCES = \ | 21 | libgnunetmulticast_la_SOURCES = \ |
22 | multicast_api.c | 22 | multicast_api.c multicast.h |
23 | libgnunetmulticast_la_LIBADD = \ | 23 | libgnunetmulticast_la_LIBADD = \ |
24 | $(top_builddir)/src/util/libgnunetutil.la \ | 24 | $(top_builddir)/src/util/libgnunetutil.la \ |
25 | $(GN_LIBINTL) $(XLIB) | 25 | $(GN_LIBINTL) $(XLIB) |
diff --git a/src/multicast/gnunet-service-multicast.c b/src/multicast/gnunet-service-multicast.c index 2f4dc8a14..ba1086cc5 100644 --- a/src/multicast/gnunet-service-multicast.c +++ b/src/multicast/gnunet-service-multicast.c | |||
@@ -137,6 +137,7 @@ struct Channel | |||
137 | */ | 137 | */ |
138 | struct GNUNET_CADET_Channel *channel; | 138 | struct GNUNET_CADET_Channel *channel; |
139 | 139 | ||
140 | // FIXME: not used | ||
140 | /** | 141 | /** |
141 | * CADET transmission handle. | 142 | * CADET transmission handle. |
142 | */ | 143 | */ |
@@ -228,7 +229,7 @@ struct Group | |||
228 | /** | 229 | /** |
229 | * Is the client disconnected? #GNUNET_YES or #GNUNET_NO | 230 | * Is the client disconnected? #GNUNET_YES or #GNUNET_NO |
230 | */ | 231 | */ |
231 | uint8_t disconnected; | 232 | uint8_t is_disconnected; |
232 | 233 | ||
233 | /** | 234 | /** |
234 | * Is this an origin (#GNUNET_YES), or member (#GNUNET_NO)? | 235 | * Is this an origin (#GNUNET_YES), or member (#GNUNET_NO)? |
@@ -365,6 +366,8 @@ client_send_join_decision (struct Member *mem, | |||
365 | static void | 366 | static void |
366 | shutdown_task (void *cls) | 367 | shutdown_task (void *cls) |
367 | { | 368 | { |
369 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
370 | "shutting down\n"); | ||
368 | if (NULL != cadet) | 371 | if (NULL != cadet) |
369 | { | 372 | { |
370 | GNUNET_CADET_disconnect (cadet); | 373 | GNUNET_CADET_disconnect (cadet); |
@@ -420,6 +423,11 @@ cleanup_member (struct Member *mem) | |||
420 | GNUNET_free (mem->join_dcsn); | 423 | GNUNET_free (mem->join_dcsn); |
421 | mem->join_dcsn = NULL; | 424 | mem->join_dcsn = NULL; |
422 | } | 425 | } |
426 | if (NULL != mem->origin_channel) | ||
427 | { | ||
428 | GNUNET_CADET_channel_destroy (mem->origin_channel->channel); | ||
429 | mem->origin_channel = NULL; | ||
430 | } | ||
423 | GNUNET_CONTAINER_multihashmap_remove (members, &grp->pub_key_hash, mem); | 431 | GNUNET_CONTAINER_multihashmap_remove (members, &grp->pub_key_hash, mem); |
424 | GNUNET_free (mem); | 432 | GNUNET_free (mem); |
425 | } | 433 | } |
@@ -553,36 +561,47 @@ client_send (struct GNUNET_SERVICE_Client *client, | |||
553 | * Send message to all clients connected to the group. | 561 | * Send message to all clients connected to the group. |
554 | */ | 562 | */ |
555 | static void | 563 | static void |
556 | client_send_group (const struct Group *grp, | 564 | client_send_group_keep_envelope (const struct Group *grp, |
557 | const struct GNUNET_MessageHeader *msg) | 565 | struct GNUNET_MQ_Envelope *env) |
558 | { | 566 | { |
559 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 567 | struct ClientList *cli = grp->clients_head; |
560 | "%p Sending message to all clients of the group.\n", grp); | ||
561 | 568 | ||
562 | struct ClientList *cl = grp->clients_head; | 569 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, |
563 | while (NULL != cl) | 570 | "%p Sending message to all clients of the group.\n", |
571 | grp); | ||
572 | while (NULL != cli) | ||
564 | { | 573 | { |
565 | struct GNUNET_MQ_Envelope * | 574 | GNUNET_MQ_send_copy (GNUNET_SERVICE_client_get_mq (cli->client), |
566 | env = GNUNET_MQ_msg_copy (msg); | 575 | env); |
567 | 576 | cli = cli->next; | |
568 | GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (cl->client), | ||
569 | env); | ||
570 | cl = cl->next; | ||
571 | } | 577 | } |
572 | } | 578 | } |
573 | 579 | ||
574 | 580 | ||
575 | /** | 581 | /** |
582 | * Send message to all clients connected to the group and | ||
583 | * takes care of freeing @env. | ||
584 | */ | ||
585 | static void | ||
586 | client_send_group (const struct Group *grp, | ||
587 | struct GNUNET_MQ_Envelope *env) | ||
588 | { | ||
589 | client_send_group_keep_envelope (grp, env); | ||
590 | GNUNET_MQ_discard (env); | ||
591 | } | ||
592 | |||
593 | |||
594 | /** | ||
576 | * Iterator callback for sending a message to origin clients. | 595 | * Iterator callback for sending a message to origin clients. |
577 | */ | 596 | */ |
578 | static int | 597 | static int |
579 | client_send_origin_cb (void *cls, const struct GNUNET_HashCode *pub_key_hash, | 598 | client_send_origin_cb (void *cls, const struct GNUNET_HashCode *pub_key_hash, |
580 | void *origin) | 599 | void *origin) |
581 | { | 600 | { |
582 | const struct GNUNET_MessageHeader *msg = cls; | 601 | struct GNUNET_MQ_Envelope *env = cls; |
583 | struct Member *orig = origin; | 602 | struct Member *orig = origin; |
584 | 603 | ||
585 | client_send_group (&orig->group, msg); | 604 | client_send_group_keep_envelope (&orig->group, env); |
586 | return GNUNET_YES; | 605 | return GNUNET_YES; |
587 | } | 606 | } |
588 | 607 | ||
@@ -594,12 +613,12 @@ static int | |||
594 | client_send_member_cb (void *cls, const struct GNUNET_HashCode *pub_key_hash, | 613 | client_send_member_cb (void *cls, const struct GNUNET_HashCode *pub_key_hash, |
595 | void *member) | 614 | void *member) |
596 | { | 615 | { |
597 | const struct GNUNET_MessageHeader *msg = cls; | 616 | struct GNUNET_MQ_Envelope *env = cls; |
598 | struct Member *mem = member; | 617 | struct Member *mem = member; |
599 | 618 | ||
600 | if (NULL != mem->join_dcsn) | 619 | if (NULL != mem->join_dcsn) |
601 | { /* Only send message to admitted members */ | 620 | { /* Only send message to admitted members */ |
602 | client_send_group (&mem->group, msg); | 621 | client_send_group_keep_envelope (&mem->group, env); |
603 | } | 622 | } |
604 | return GNUNET_YES; | 623 | return GNUNET_YES; |
605 | } | 624 | } |
@@ -615,15 +634,16 @@ client_send_member_cb (void *cls, const struct GNUNET_HashCode *pub_key_hash, | |||
615 | */ | 634 | */ |
616 | static int | 635 | static int |
617 | client_send_all (struct GNUNET_HashCode *pub_key_hash, | 636 | client_send_all (struct GNUNET_HashCode *pub_key_hash, |
618 | const struct GNUNET_MessageHeader *msg) | 637 | struct GNUNET_MQ_Envelope *env) |
619 | { | 638 | { |
620 | int n = 0; | 639 | int n = 0; |
621 | n += GNUNET_CONTAINER_multihashmap_get_multiple (origins, pub_key_hash, | 640 | n += GNUNET_CONTAINER_multihashmap_get_multiple (origins, pub_key_hash, |
622 | client_send_origin_cb, | 641 | client_send_origin_cb, |
623 | (void *) msg); | 642 | (void *) env); |
624 | n += GNUNET_CONTAINER_multihashmap_get_multiple (members, pub_key_hash, | 643 | n += GNUNET_CONTAINER_multihashmap_get_multiple (members, pub_key_hash, |
625 | client_send_member_cb, | 644 | client_send_member_cb, |
626 | (void *) msg); | 645 | (void *) env); |
646 | GNUNET_MQ_discard (env); | ||
627 | return n; | 647 | return n; |
628 | } | 648 | } |
629 | 649 | ||
@@ -636,14 +656,14 @@ client_send_all (struct GNUNET_HashCode *pub_key_hash, | |||
636 | */ | 656 | */ |
637 | static int | 657 | static int |
638 | client_send_random (struct GNUNET_HashCode *pub_key_hash, | 658 | client_send_random (struct GNUNET_HashCode *pub_key_hash, |
639 | const struct GNUNET_MessageHeader *msg) | 659 | struct GNUNET_MQ_Envelope *env) |
640 | { | 660 | { |
641 | int n = 0; | 661 | int n = 0; |
642 | n = GNUNET_CONTAINER_multihashmap_get_random (origins, client_send_origin_cb, | 662 | n = GNUNET_CONTAINER_multihashmap_get_random (origins, client_send_origin_cb, |
643 | (void *) msg); | 663 | (void *) env); |
644 | if (n <= 0) | 664 | if (n <= 0) |
645 | n = GNUNET_CONTAINER_multihashmap_get_random (members, client_send_member_cb, | 665 | n = GNUNET_CONTAINER_multihashmap_get_random (members, client_send_member_cb, |
646 | (void *) msg); | 666 | (void *) env); |
647 | return n; | 667 | return n; |
648 | } | 668 | } |
649 | 669 | ||
@@ -658,12 +678,12 @@ client_send_random (struct GNUNET_HashCode *pub_key_hash, | |||
658 | */ | 678 | */ |
659 | static int | 679 | static int |
660 | client_send_origin (struct GNUNET_HashCode *pub_key_hash, | 680 | client_send_origin (struct GNUNET_HashCode *pub_key_hash, |
661 | const struct GNUNET_MessageHeader *msg) | 681 | struct GNUNET_MQ_Envelope *env) |
662 | { | 682 | { |
663 | int n = 0; | 683 | int n = 0; |
664 | n += GNUNET_CONTAINER_multihashmap_get_multiple (origins, pub_key_hash, | 684 | n += GNUNET_CONTAINER_multihashmap_get_multiple (origins, pub_key_hash, |
665 | client_send_origin_cb, | 685 | client_send_origin_cb, |
666 | (void *) msg); | 686 | (void *) env); |
667 | return n; | 687 | return n; |
668 | } | 688 | } |
669 | 689 | ||
@@ -677,17 +697,12 @@ client_send_origin (struct GNUNET_HashCode *pub_key_hash, | |||
677 | static void | 697 | static void |
678 | client_send_ack (struct GNUNET_HashCode *pub_key_hash) | 698 | client_send_ack (struct GNUNET_HashCode *pub_key_hash) |
679 | { | 699 | { |
700 | struct GNUNET_MQ_Envelope *env; | ||
701 | |||
680 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 702 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, |
681 | "Sending message ACK to client.\n"); | 703 | "Sending message ACK to client.\n"); |
682 | 704 | env = GNUNET_MQ_msg_header (GNUNET_MESSAGE_TYPE_MULTICAST_FRAGMENT_ACK); | |
683 | static struct GNUNET_MessageHeader *msg = NULL; | 705 | client_send_all (pub_key_hash, env); |
684 | if (NULL == msg) | ||
685 | { | ||
686 | msg = GNUNET_malloc (sizeof (*msg)); | ||
687 | msg->type = htons (GNUNET_MESSAGE_TYPE_MULTICAST_FRAGMENT_ACK); | ||
688 | msg->size = htons (sizeof (*msg)); | ||
689 | } | ||
690 | client_send_all (pub_key_hash, msg); | ||
691 | } | 706 | } |
692 | 707 | ||
693 | 708 | ||
@@ -983,7 +998,8 @@ handle_cadet_join_request (void *cls, | |||
983 | chn->peer = req->peer; | 998 | chn->peer = req->peer; |
984 | chn->join_status = JOIN_WAITING; | 999 | chn->join_status = JOIN_WAITING; |
985 | 1000 | ||
986 | client_send_all (&group_pub_hash, &req->header); | 1001 | client_send_all (&group_pub_hash, |
1002 | GNUNET_MQ_msg_copy (&req->header)); | ||
987 | } | 1003 | } |
988 | 1004 | ||
989 | 1005 | ||
@@ -1102,7 +1118,8 @@ handle_cadet_message (void *cls, | |||
1102 | { | 1118 | { |
1103 | struct Channel *chn = cls; | 1119 | struct Channel *chn = cls; |
1104 | GNUNET_CADET_receive_done (chn->channel); | 1120 | GNUNET_CADET_receive_done (chn->channel); |
1105 | client_send_all (&chn->group_pub_hash, &msg->header); | 1121 | client_send_all (&chn->group_pub_hash, |
1122 | GNUNET_MQ_msg_copy (&msg->header)); | ||
1106 | } | 1123 | } |
1107 | 1124 | ||
1108 | 1125 | ||
@@ -1153,30 +1170,32 @@ handle_cadet_request (void *cls, | |||
1153 | { | 1170 | { |
1154 | struct Channel *chn = cls; | 1171 | struct Channel *chn = cls; |
1155 | GNUNET_CADET_receive_done (chn->channel); | 1172 | GNUNET_CADET_receive_done (chn->channel); |
1156 | client_send_origin (&chn->group_pub_hash, &req->header); | 1173 | client_send_origin (&chn->group_pub_hash, |
1174 | GNUNET_MQ_msg_copy (&req->header)); | ||
1157 | } | 1175 | } |
1158 | 1176 | ||
1159 | 1177 | ||
1160 | static int | 1178 | // FIXME: do checks in handle_cadet_replay_request |
1161 | check_cadet_replay_request (void *cls, | 1179 | //static int |
1162 | const struct MulticastReplayRequestMessage *req) | 1180 | //check_cadet_replay_request (void *cls, |
1163 | { | 1181 | // const struct MulticastReplayRequestMessage *req) |
1164 | uint16_t size = ntohs (req->header.size); | 1182 | //{ |
1165 | if (size < sizeof (*req)) | 1183 | // uint16_t size = ntohs (req->header.size); |
1166 | { | 1184 | // if (size < sizeof (*req)) |
1167 | GNUNET_break_op (0); | 1185 | // { |
1168 | return GNUNET_SYSERR; | 1186 | // GNUNET_break_op (0); |
1169 | } | 1187 | // return GNUNET_SYSERR; |
1170 | 1188 | // } | |
1171 | struct Channel *chn = cls; | 1189 | // |
1172 | if (NULL == chn) | 1190 | // struct Channel *chn = cls; |
1173 | { | 1191 | // if (NULL == chn) |
1174 | GNUNET_break_op (0); | 1192 | // { |
1175 | return GNUNET_SYSERR; | 1193 | // GNUNET_break_op (0); |
1176 | } | 1194 | // return GNUNET_SYSERR; |
1177 | 1195 | // } | |
1178 | return GNUNET_OK; | 1196 | // |
1179 | } | 1197 | // return GNUNET_OK; |
1198 | //} | ||
1180 | 1199 | ||
1181 | 1200 | ||
1182 | /** | 1201 | /** |
@@ -1187,6 +1206,7 @@ handle_cadet_replay_request (void *cls, | |||
1187 | const struct MulticastReplayRequestMessage *req) | 1206 | const struct MulticastReplayRequestMessage *req) |
1188 | { | 1207 | { |
1189 | struct Channel *chn = cls; | 1208 | struct Channel *chn = cls; |
1209 | |||
1190 | GNUNET_CADET_receive_done (chn->channel); | 1210 | GNUNET_CADET_receive_done (chn->channel); |
1191 | 1211 | ||
1192 | struct MulticastReplayRequestMessage rep = *req; | 1212 | struct MulticastReplayRequestMessage rep = *req; |
@@ -1203,12 +1223,16 @@ handle_cadet_replay_request (void *cls, | |||
1203 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST); | 1223 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST); |
1204 | } | 1224 | } |
1205 | struct GNUNET_HashCode key_hash; | 1225 | struct GNUNET_HashCode key_hash; |
1206 | replay_key_hash (rep.fragment_id, rep.message_id, rep.fragment_offset, | 1226 | replay_key_hash (rep.fragment_id, |
1207 | rep.flags, &key_hash); | 1227 | rep.message_id, |
1228 | rep.fragment_offset, | ||
1229 | rep.flags, | ||
1230 | &key_hash); | ||
1208 | GNUNET_CONTAINER_multihashmap_put (grp_replay_req, &key_hash, chn, | 1231 | GNUNET_CONTAINER_multihashmap_put (grp_replay_req, &key_hash, chn, |
1209 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE); | 1232 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE); |
1210 | 1233 | ||
1211 | client_send_random (&chn->group_pub_hash, &rep.header); | 1234 | client_send_random (&chn->group_pub_hash, |
1235 | GNUNET_MQ_msg_copy (&rep.header)); | ||
1212 | } | 1236 | } |
1213 | 1237 | ||
1214 | 1238 | ||
@@ -1290,10 +1314,10 @@ cadet_channel_create (struct Group *grp, struct GNUNET_PeerIdentity *peer) | |||
1290 | struct MulticastJoinDecisionMessageHeader, | 1314 | struct MulticastJoinDecisionMessageHeader, |
1291 | chn), | 1315 | chn), |
1292 | 1316 | ||
1293 | GNUNET_MQ_hd_var_size (cadet_replay_request, | 1317 | GNUNET_MQ_hd_fixed_size (cadet_replay_request, |
1294 | GNUNET_MESSAGE_TYPE_MULTICAST_REPLAY_REQUEST, | 1318 | GNUNET_MESSAGE_TYPE_MULTICAST_REPLAY_REQUEST, |
1295 | struct MulticastReplayRequestMessage, | 1319 | struct MulticastReplayRequestMessage, |
1296 | chn), | 1320 | chn), |
1297 | 1321 | ||
1298 | GNUNET_MQ_hd_var_size (cadet_replay_response, | 1322 | GNUNET_MQ_hd_var_size (cadet_replay_response, |
1299 | GNUNET_MESSAGE_TYPE_MULTICAST_REPLAY_RESPONSE, | 1323 | GNUNET_MESSAGE_TYPE_MULTICAST_REPLAY_RESPONSE, |
@@ -1357,6 +1381,7 @@ handle_client_origin_start (void *cls, | |||
1357 | grp->is_origin = GNUNET_YES; | 1381 | grp->is_origin = GNUNET_YES; |
1358 | grp->pub_key = pub_key; | 1382 | grp->pub_key = pub_key; |
1359 | grp->pub_key_hash = pub_key_hash; | 1383 | grp->pub_key_hash = pub_key_hash; |
1384 | grp->is_disconnected = GNUNET_NO; | ||
1360 | 1385 | ||
1361 | GNUNET_CONTAINER_multihashmap_put (origins, &grp->pub_key_hash, orig, | 1386 | GNUNET_CONTAINER_multihashmap_put (origins, &grp->pub_key_hash, orig, |
1362 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST); | 1387 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST); |
@@ -1379,10 +1404,10 @@ handle_client_origin_start (void *cls, | |||
1379 | struct MulticastJoinRequestMessage, | 1404 | struct MulticastJoinRequestMessage, |
1380 | grp), | 1405 | grp), |
1381 | 1406 | ||
1382 | GNUNET_MQ_hd_var_size (cadet_replay_request, | 1407 | GNUNET_MQ_hd_fixed_size (cadet_replay_request, |
1383 | GNUNET_MESSAGE_TYPE_MULTICAST_REPLAY_REQUEST, | 1408 | GNUNET_MESSAGE_TYPE_MULTICAST_REPLAY_REQUEST, |
1384 | struct MulticastReplayRequestMessage, | 1409 | struct MulticastReplayRequestMessage, |
1385 | grp), | 1410 | grp), |
1386 | 1411 | ||
1387 | GNUNET_MQ_hd_var_size (cadet_replay_response, | 1412 | GNUNET_MQ_hd_var_size (cadet_replay_response, |
1388 | GNUNET_MESSAGE_TYPE_MULTICAST_REPLAY_RESPONSE, | 1413 | GNUNET_MESSAGE_TYPE_MULTICAST_REPLAY_RESPONSE, |
@@ -1484,6 +1509,7 @@ handle_client_member_join (void *cls, | |||
1484 | grp->is_origin = GNUNET_NO; | 1509 | grp->is_origin = GNUNET_NO; |
1485 | grp->pub_key = msg->group_pub_key; | 1510 | grp->pub_key = msg->group_pub_key; |
1486 | grp->pub_key_hash = pub_key_hash; | 1511 | grp->pub_key_hash = pub_key_hash; |
1512 | grp->is_disconnected = GNUNET_NO; | ||
1487 | group_set_cadet_port_hash (grp); | 1513 | group_set_cadet_port_hash (grp); |
1488 | 1514 | ||
1489 | if (NULL == grp_mem) | 1515 | if (NULL == grp_mem) |
@@ -1494,7 +1520,8 @@ handle_client_member_join (void *cls, | |||
1494 | } | 1520 | } |
1495 | GNUNET_CONTAINER_multihashmap_put (grp_mem, &mem->pub_key_hash, mem, | 1521 | GNUNET_CONTAINER_multihashmap_put (grp_mem, &mem->pub_key_hash, mem, |
1496 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST); | 1522 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST); |
1497 | 1523 | ||
1524 | // FIXME: should the members hash map have option UNIQUE_FAST? | ||
1498 | GNUNET_CONTAINER_multihashmap_put (members, &grp->pub_key_hash, mem, | 1525 | GNUNET_CONTAINER_multihashmap_put (members, &grp->pub_key_hash, mem, |
1499 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE); | 1526 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE); |
1500 | } | 1527 | } |
@@ -1509,10 +1536,11 @@ handle_client_member_join (void *cls, | |||
1509 | 1536 | ||
1510 | char *str = GNUNET_CRYPTO_ecdsa_public_key_to_string (&mem->pub_key); | 1537 | char *str = GNUNET_CRYPTO_ecdsa_public_key_to_string (&mem->pub_key); |
1511 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 1538 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
1512 | "Client connected to group %s as member %s (%s).\n", | 1539 | "Client connected to group %s as member %s (%s). size = %d\n", |
1513 | GNUNET_h2s (&grp->pub_key_hash), | 1540 | GNUNET_h2s (&grp->pub_key_hash), |
1514 | GNUNET_h2s2 (&mem->pub_key_hash), | 1541 | GNUNET_h2s2 (&mem->pub_key_hash), |
1515 | str); | 1542 | str, |
1543 | GNUNET_CONTAINER_multihashmap_size (members)); | ||
1516 | GNUNET_free (str); | 1544 | GNUNET_free (str); |
1517 | 1545 | ||
1518 | if (NULL != mem->join_dcsn) | 1546 | if (NULL != mem->join_dcsn) |
@@ -1567,7 +1595,9 @@ handle_client_member_join (void *cls, | |||
1567 | GNUNET_free (mem->join_req); | 1595 | GNUNET_free (mem->join_req); |
1568 | mem->join_req = req; | 1596 | mem->join_req = req; |
1569 | 1597 | ||
1570 | if (0 == client_send_origin (&grp->pub_key_hash, &mem->join_req->header)) | 1598 | if (0 == |
1599 | client_send_origin (&grp->pub_key_hash, | ||
1600 | GNUNET_MQ_msg_copy (&mem->join_req->header))) | ||
1571 | { /* No local origins, send to remote origin */ | 1601 | { /* No local origins, send to remote origin */ |
1572 | cadet_send_join_request (mem); | 1602 | cadet_send_join_request (mem); |
1573 | } | 1603 | } |
@@ -1580,7 +1610,7 @@ static void | |||
1580 | client_send_join_decision (struct Member *mem, | 1610 | client_send_join_decision (struct Member *mem, |
1581 | const struct MulticastJoinDecisionMessageHeader *hdcsn) | 1611 | const struct MulticastJoinDecisionMessageHeader *hdcsn) |
1582 | { | 1612 | { |
1583 | client_send_group (&mem->group, &hdcsn->header); | 1613 | client_send_group (&mem->group, GNUNET_MQ_msg_copy (&hdcsn->header)); |
1584 | 1614 | ||
1585 | const struct MulticastJoinDecisionMessage * | 1615 | const struct MulticastJoinDecisionMessage * |
1586 | dcsn = (const struct MulticastJoinDecisionMessage *) &hdcsn[1]; | 1616 | dcsn = (const struct MulticastJoinDecisionMessage *) &hdcsn[1]; |
@@ -1621,8 +1651,9 @@ handle_client_join_decision (void *cls, | |||
1621 | GNUNET_SERVICE_client_drop (client); | 1651 | GNUNET_SERVICE_client_drop (client); |
1622 | return; | 1652 | return; |
1623 | } | 1653 | } |
1654 | GNUNET_assert (GNUNET_NO == grp->is_disconnected); | ||
1624 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 1655 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
1625 | "%p Got join decision from client for group %s..\n", | 1656 | "%p got join decision from client for group %s..\n", |
1626 | grp, GNUNET_h2s (&grp->pub_key_hash)); | 1657 | grp, GNUNET_h2s (&grp->pub_key_hash)); |
1627 | 1658 | ||
1628 | struct GNUNET_CONTAINER_MultiHashMap * | 1659 | struct GNUNET_CONTAINER_MultiHashMap * |
@@ -1652,6 +1683,32 @@ handle_client_join_decision (void *cls, | |||
1652 | } | 1683 | } |
1653 | 1684 | ||
1654 | 1685 | ||
1686 | static void | ||
1687 | handle_client_part_request (void *cls, | ||
1688 | const struct GNUNET_MessageHeader *msg) | ||
1689 | { | ||
1690 | struct Client *c = cls; | ||
1691 | struct GNUNET_SERVICE_Client *client = c->client; | ||
1692 | struct Group *grp = c->group; | ||
1693 | struct GNUNET_MQ_Envelope *env; | ||
1694 | |||
1695 | if (NULL == grp) | ||
1696 | { | ||
1697 | GNUNET_break (0); | ||
1698 | GNUNET_SERVICE_client_drop (client); | ||
1699 | return; | ||
1700 | } | ||
1701 | GNUNET_assert (GNUNET_NO == grp->is_disconnected); | ||
1702 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1703 | "%p got part request from client for group %s.\n", | ||
1704 | grp, GNUNET_h2s (&grp->pub_key_hash)); | ||
1705 | grp->is_disconnected = GNUNET_YES; | ||
1706 | env = GNUNET_MQ_msg_header (GNUNET_MESSAGE_TYPE_MULTICAST_PART_ACK); | ||
1707 | client_send_group (grp, env); | ||
1708 | GNUNET_SERVICE_client_continue (client); | ||
1709 | } | ||
1710 | |||
1711 | |||
1655 | static int | 1712 | static int |
1656 | check_client_multicast_message (void *cls, | 1713 | check_client_multicast_message (void *cls, |
1657 | const struct GNUNET_MULTICAST_MessageHeader *msg) | 1714 | const struct GNUNET_MULTICAST_MessageHeader *msg) |
@@ -1667,6 +1724,7 @@ static void | |||
1667 | handle_client_multicast_message (void *cls, | 1724 | handle_client_multicast_message (void *cls, |
1668 | const struct GNUNET_MULTICAST_MessageHeader *msg) | 1725 | const struct GNUNET_MULTICAST_MessageHeader *msg) |
1669 | { | 1726 | { |
1727 | // FIXME: what if GNUNET_YES == grp->is_disconnected? Do we allow sending messages? | ||
1670 | struct Client *c = cls; | 1728 | struct Client *c = cls; |
1671 | struct GNUNET_SERVICE_Client *client = c->client; | 1729 | struct GNUNET_SERVICE_Client *client = c->client; |
1672 | struct Group *grp = c->group; | 1730 | struct Group *grp = c->group; |
@@ -1680,6 +1738,7 @@ handle_client_multicast_message (void *cls, | |||
1680 | GNUNET_assert (GNUNET_YES == grp->is_origin); | 1738 | GNUNET_assert (GNUNET_YES == grp->is_origin); |
1681 | struct Origin *orig = grp->origin; | 1739 | struct Origin *orig = grp->origin; |
1682 | 1740 | ||
1741 | // FIXME: use GNUNET_MQ_msg_copy | ||
1683 | /* FIXME: yucky, should use separate message structs for P2P and CS! */ | 1742 | /* FIXME: yucky, should use separate message structs for P2P and CS! */ |
1684 | struct GNUNET_MULTICAST_MessageHeader * | 1743 | struct GNUNET_MULTICAST_MessageHeader * |
1685 | out = (struct GNUNET_MULTICAST_MessageHeader *) GNUNET_copy_message (&msg->header); | 1744 | out = (struct GNUNET_MULTICAST_MessageHeader *) GNUNET_copy_message (&msg->header); |
@@ -1696,7 +1755,7 @@ handle_client_multicast_message (void *cls, | |||
1696 | GNUNET_assert (0); | 1755 | GNUNET_assert (0); |
1697 | } | 1756 | } |
1698 | 1757 | ||
1699 | client_send_all (&grp->pub_key_hash, &out->header); | 1758 | client_send_all (&grp->pub_key_hash, GNUNET_MQ_msg_copy (&out->header)); |
1700 | cadet_send_children (&grp->pub_key_hash, &out->header); | 1759 | cadet_send_children (&grp->pub_key_hash, &out->header); |
1701 | client_send_ack (&grp->pub_key_hash); | 1760 | client_send_ack (&grp->pub_key_hash); |
1702 | GNUNET_free (out); | 1761 | GNUNET_free (out); |
@@ -1730,6 +1789,7 @@ handle_client_multicast_request (void *cls, | |||
1730 | GNUNET_SERVICE_client_drop (client); | 1789 | GNUNET_SERVICE_client_drop (client); |
1731 | return; | 1790 | return; |
1732 | } | 1791 | } |
1792 | GNUNET_assert (GNUNET_NO == grp->is_disconnected); | ||
1733 | GNUNET_assert (GNUNET_NO == grp->is_origin); | 1793 | GNUNET_assert (GNUNET_NO == grp->is_origin); |
1734 | struct Member *mem = grp->member; | 1794 | struct Member *mem = grp->member; |
1735 | 1795 | ||
@@ -1751,7 +1811,9 @@ handle_client_multicast_request (void *cls, | |||
1751 | } | 1811 | } |
1752 | 1812 | ||
1753 | uint8_t send_ack = GNUNET_YES; | 1813 | uint8_t send_ack = GNUNET_YES; |
1754 | if (0 == client_send_origin (&grp->pub_key_hash, &out->header)) | 1814 | if (0 == |
1815 | client_send_origin (&grp->pub_key_hash, | ||
1816 | GNUNET_MQ_msg_copy (&out->header))) | ||
1755 | { /* No local origins, send to remote origin */ | 1817 | { /* No local origins, send to remote origin */ |
1756 | if (NULL != mem->origin_channel) | 1818 | if (NULL != mem->origin_channel) |
1757 | { | 1819 | { |
@@ -1792,6 +1854,7 @@ handle_client_replay_request (void *cls, | |||
1792 | GNUNET_SERVICE_client_drop (client); | 1854 | GNUNET_SERVICE_client_drop (client); |
1793 | return; | 1855 | return; |
1794 | } | 1856 | } |
1857 | GNUNET_assert (GNUNET_NO == grp->is_disconnected); | ||
1795 | GNUNET_assert (GNUNET_NO == grp->is_origin); | 1858 | GNUNET_assert (GNUNET_NO == grp->is_origin); |
1796 | struct Member *mem = grp->member; | 1859 | struct Member *mem = grp->member; |
1797 | 1860 | ||
@@ -1812,7 +1875,9 @@ handle_client_replay_request (void *cls, | |||
1812 | GNUNET_CONTAINER_multihashmap_put (grp_replay_req, &key_hash, client, | 1875 | GNUNET_CONTAINER_multihashmap_put (grp_replay_req, &key_hash, client, |
1813 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE); | 1876 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE); |
1814 | 1877 | ||
1815 | if (0 == client_send_origin (&grp->pub_key_hash, &rep->header)) | 1878 | if (0 == |
1879 | client_send_origin (&grp->pub_key_hash, | ||
1880 | GNUNET_MQ_msg_copy (&rep->header))) | ||
1816 | { /* No local origin, replay from remote members / origin. */ | 1881 | { /* No local origin, replay from remote members / origin. */ |
1817 | if (NULL != mem->origin_channel) | 1882 | if (NULL != mem->origin_channel) |
1818 | { | 1883 | { |
@@ -1821,6 +1886,7 @@ handle_client_replay_request (void *cls, | |||
1821 | else | 1886 | else |
1822 | { | 1887 | { |
1823 | /* FIXME: not yet connected to origin */ | 1888 | /* FIXME: not yet connected to origin */ |
1889 | GNUNET_assert (0); | ||
1824 | GNUNET_SERVICE_client_drop (client); | 1890 | GNUNET_SERVICE_client_drop (client); |
1825 | return; | 1891 | return; |
1826 | } | 1892 | } |
@@ -1880,6 +1946,7 @@ handle_client_replay_response_end (void *cls, | |||
1880 | GNUNET_SERVICE_client_drop (client); | 1946 | GNUNET_SERVICE_client_drop (client); |
1881 | return; | 1947 | return; |
1882 | } | 1948 | } |
1949 | GNUNET_assert (GNUNET_NO == grp->is_disconnected); | ||
1883 | 1950 | ||
1884 | struct GNUNET_HashCode key_hash; | 1951 | struct GNUNET_HashCode key_hash; |
1885 | replay_key_hash (res->fragment_id, res->message_id, res->fragment_offset, | 1952 | replay_key_hash (res->fragment_id, res->message_id, res->fragment_offset, |
@@ -1939,6 +2006,7 @@ handle_client_replay_response (void *cls, | |||
1939 | GNUNET_SERVICE_client_drop (client); | 2006 | GNUNET_SERVICE_client_drop (client); |
1940 | return; | 2007 | return; |
1941 | } | 2008 | } |
2009 | GNUNET_assert (GNUNET_NO == grp->is_disconnected); | ||
1942 | 2010 | ||
1943 | const struct GNUNET_MessageHeader *msg = &res->header; | 2011 | const struct GNUNET_MessageHeader *msg = &res->header; |
1944 | if (GNUNET_MULTICAST_REC_OK == res->error_code) | 2012 | if (GNUNET_MULTICAST_REC_OK == res->error_code) |
@@ -2033,9 +2101,14 @@ client_notify_disconnect (void *cls, | |||
2033 | grp, (GNUNET_YES == grp->is_origin) ? "origin" : "member", | 2101 | grp, (GNUNET_YES == grp->is_origin) ? "origin" : "member", |
2034 | GNUNET_h2s (&grp->pub_key_hash)); | 2102 | GNUNET_h2s (&grp->pub_key_hash)); |
2035 | 2103 | ||
2104 | // FIXME (due to protocol change): here we must not remove all clients, | ||
2105 | // only the one we were notified about! | ||
2036 | struct ClientList *cl = grp->clients_head; | 2106 | struct ClientList *cl = grp->clients_head; |
2037 | while (NULL != cl) | 2107 | while (NULL != cl) |
2038 | { | 2108 | { |
2109 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
2110 | "iterating clients for group %p\n", | ||
2111 | grp); | ||
2039 | if (cl->client == client) | 2112 | if (cl->client == client) |
2040 | { | 2113 | { |
2041 | GNUNET_CONTAINER_DLL_remove (grp->clients_head, grp->clients_tail, cl); | 2114 | GNUNET_CONTAINER_DLL_remove (grp->clients_head, grp->clients_tail, cl); |
@@ -2049,16 +2122,7 @@ client_notify_disconnect (void *cls, | |||
2049 | 2122 | ||
2050 | if (NULL == grp->clients_head) | 2123 | if (NULL == grp->clients_head) |
2051 | { /* Last client disconnected. */ | 2124 | { /* Last client disconnected. */ |
2052 | #if FIXME | 2125 | cleanup_group (grp); |
2053 | if (NULL != grp->tmit_head) | ||
2054 | { /* Send pending messages via CADET before cleanup. */ | ||
2055 | transmit_message (grp); | ||
2056 | } | ||
2057 | else | ||
2058 | #endif | ||
2059 | { | ||
2060 | cleanup_group (grp); | ||
2061 | } | ||
2062 | } | 2126 | } |
2063 | } | 2127 | } |
2064 | 2128 | ||
@@ -2103,9 +2167,9 @@ run (void *cls, | |||
2103 | GNUNET_SERVICE_MAIN | 2167 | GNUNET_SERVICE_MAIN |
2104 | ("multicast", | 2168 | ("multicast", |
2105 | GNUNET_SERVICE_OPTION_NONE, | 2169 | GNUNET_SERVICE_OPTION_NONE, |
2106 | run, | 2170 | &run, |
2107 | client_notify_connect, | 2171 | &client_notify_connect, |
2108 | client_notify_disconnect, | 2172 | &client_notify_disconnect, |
2109 | NULL, | 2173 | NULL, |
2110 | GNUNET_MQ_hd_fixed_size (client_origin_start, | 2174 | GNUNET_MQ_hd_fixed_size (client_origin_start, |
2111 | GNUNET_MESSAGE_TYPE_MULTICAST_ORIGIN_START, | 2175 | GNUNET_MESSAGE_TYPE_MULTICAST_ORIGIN_START, |
@@ -2119,6 +2183,10 @@ GNUNET_SERVICE_MAIN | |||
2119 | GNUNET_MESSAGE_TYPE_MULTICAST_JOIN_DECISION, | 2183 | GNUNET_MESSAGE_TYPE_MULTICAST_JOIN_DECISION, |
2120 | struct MulticastJoinDecisionMessageHeader, | 2184 | struct MulticastJoinDecisionMessageHeader, |
2121 | NULL), | 2185 | NULL), |
2186 | GNUNET_MQ_hd_fixed_size (client_part_request, | ||
2187 | GNUNET_MESSAGE_TYPE_MULTICAST_PART_REQUEST, | ||
2188 | struct GNUNET_MessageHeader, | ||
2189 | NULL), | ||
2122 | GNUNET_MQ_hd_var_size (client_multicast_message, | 2190 | GNUNET_MQ_hd_var_size (client_multicast_message, |
2123 | GNUNET_MESSAGE_TYPE_MULTICAST_MESSAGE, | 2191 | GNUNET_MESSAGE_TYPE_MULTICAST_MESSAGE, |
2124 | struct GNUNET_MULTICAST_MessageHeader, | 2192 | struct GNUNET_MULTICAST_MessageHeader, |
diff --git a/src/multicast/multicast_api.c b/src/multicast/multicast_api.c index a8b1dee40..3c911f48a 100644 --- a/src/multicast/multicast_api.c +++ b/src/multicast/multicast_api.c | |||
@@ -542,31 +542,12 @@ group_cleanup (struct GNUNET_MULTICAST_Group *grp) | |||
542 | 542 | ||
543 | 543 | ||
544 | static void | 544 | static void |
545 | group_disconnect (struct GNUNET_MULTICAST_Group *grp, | 545 | handle_group_part_ack (void *cls, |
546 | GNUNET_ContinuationCallback cb, | 546 | const struct GNUNET_MessageHeader *msg) |
547 | void *cls) | ||
548 | { | 547 | { |
549 | grp->is_disconnecting = GNUNET_YES; | 548 | struct GNUNET_MULTICAST_Group *grp = cls; |
550 | grp->disconnect_cb = cb; | ||
551 | grp->disconnect_cls = cls; | ||
552 | 549 | ||
553 | if (NULL != grp->mq) | 550 | group_cleanup (grp); |
554 | { | ||
555 | struct GNUNET_MQ_Envelope *last = GNUNET_MQ_get_last_envelope (grp->mq); | ||
556 | if (NULL != last) | ||
557 | { | ||
558 | GNUNET_MQ_notify_sent (last, | ||
559 | (GNUNET_SCHEDULER_TaskCallback) group_cleanup, grp); | ||
560 | } | ||
561 | else | ||
562 | { | ||
563 | group_cleanup (grp); | ||
564 | } | ||
565 | } | ||
566 | else | ||
567 | { | ||
568 | group_cleanup (grp); | ||
569 | } | ||
570 | } | 551 | } |
571 | 552 | ||
572 | 553 | ||
@@ -779,6 +760,10 @@ origin_connect (struct GNUNET_MULTICAST_Origin *orig) | |||
779 | GNUNET_MESSAGE_TYPE_MULTICAST_JOIN_REQUEST, | 760 | GNUNET_MESSAGE_TYPE_MULTICAST_JOIN_REQUEST, |
780 | struct MulticastJoinRequestMessage, | 761 | struct MulticastJoinRequestMessage, |
781 | grp), | 762 | grp), |
763 | GNUNET_MQ_hd_fixed_size (group_part_ack, | ||
764 | GNUNET_MESSAGE_TYPE_MULTICAST_PART_ACK, | ||
765 | struct GNUNET_MessageHeader, | ||
766 | grp), | ||
782 | GNUNET_MQ_hd_fixed_size (group_replay_request, | 767 | GNUNET_MQ_hd_fixed_size (group_replay_request, |
783 | GNUNET_MESSAGE_TYPE_MULTICAST_REPLAY_REQUEST, | 768 | GNUNET_MESSAGE_TYPE_MULTICAST_REPLAY_REQUEST, |
784 | struct MulticastReplayRequestMessage, | 769 | struct MulticastReplayRequestMessage, |
@@ -879,8 +864,13 @@ GNUNET_MULTICAST_origin_stop (struct GNUNET_MULTICAST_Origin *orig, | |||
879 | void *stop_cls) | 864 | void *stop_cls) |
880 | { | 865 | { |
881 | struct GNUNET_MULTICAST_Group *grp = &orig->grp; | 866 | struct GNUNET_MULTICAST_Group *grp = &orig->grp; |
867 | struct GNUNET_MQ_Envelope *env; | ||
882 | 868 | ||
883 | group_disconnect (grp, stop_cb, stop_cls); | 869 | grp->is_disconnecting = GNUNET_YES; |
870 | grp->disconnect_cb = stop_cb; | ||
871 | grp->disconnect_cls = stop_cls; | ||
872 | env = GNUNET_MQ_msg_header (GNUNET_MESSAGE_TYPE_MULTICAST_PART_REQUEST); | ||
873 | GNUNET_MQ_send (grp->mq, env); | ||
884 | } | 874 | } |
885 | 875 | ||
886 | 876 | ||
@@ -1065,6 +1055,10 @@ member_connect (struct GNUNET_MULTICAST_Member *mem) | |||
1065 | GNUNET_MESSAGE_TYPE_MULTICAST_JOIN_DECISION, | 1055 | GNUNET_MESSAGE_TYPE_MULTICAST_JOIN_DECISION, |
1066 | struct MulticastJoinDecisionMessageHeader, | 1056 | struct MulticastJoinDecisionMessageHeader, |
1067 | mem), | 1057 | mem), |
1058 | GNUNET_MQ_hd_fixed_size (group_part_ack, | ||
1059 | GNUNET_MESSAGE_TYPE_MULTICAST_PART_ACK, | ||
1060 | struct GNUNET_MessageHeader, | ||
1061 | grp), | ||
1068 | GNUNET_MQ_hd_fixed_size (group_replay_request, | 1062 | GNUNET_MQ_hd_fixed_size (group_replay_request, |
1069 | GNUNET_MESSAGE_TYPE_MULTICAST_REPLAY_REQUEST, | 1063 | GNUNET_MESSAGE_TYPE_MULTICAST_REPLAY_REQUEST, |
1070 | struct MulticastReplayRequestMessage, | 1064 | struct MulticastReplayRequestMessage, |
@@ -1198,16 +1192,19 @@ GNUNET_MULTICAST_member_part (struct GNUNET_MULTICAST_Member *mem, | |||
1198 | GNUNET_ContinuationCallback part_cb, | 1192 | GNUNET_ContinuationCallback part_cb, |
1199 | void *part_cls) | 1193 | void *part_cls) |
1200 | { | 1194 | { |
1201 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "%p Member parting.\n", mem); | ||
1202 | struct GNUNET_MULTICAST_Group *grp = &mem->grp; | 1195 | struct GNUNET_MULTICAST_Group *grp = &mem->grp; |
1196 | struct GNUNET_MQ_Envelope *env; | ||
1203 | 1197 | ||
1204 | mem->join_dcsn_cb = NULL; | 1198 | mem->join_dcsn_cb = NULL; |
1205 | grp->join_req_cb = NULL; | 1199 | grp->join_req_cb = NULL; |
1206 | grp->message_cb = NULL; | 1200 | grp->message_cb = NULL; |
1207 | grp->replay_msg_cb = NULL; | 1201 | grp->replay_msg_cb = NULL; |
1208 | grp->replay_frag_cb = NULL; | 1202 | grp->replay_frag_cb = NULL; |
1209 | 1203 | grp->is_disconnecting = GNUNET_YES; | |
1210 | group_disconnect (grp, part_cb, part_cls); | 1204 | grp->disconnect_cb = part_cb; |
1205 | grp->disconnect_cls = part_cls; | ||
1206 | env = GNUNET_MQ_msg_header (GNUNET_MESSAGE_TYPE_MULTICAST_PART_REQUEST); | ||
1207 | GNUNET_MQ_send (grp->mq, env); | ||
1211 | } | 1208 | } |
1212 | 1209 | ||
1213 | 1210 | ||
diff --git a/src/multicast/test_multicast_multipeer.c b/src/multicast/test_multicast_multipeer.c index 5f4493993..7df1a8213 100644 --- a/src/multicast/test_multicast_multipeer.c +++ b/src/multicast/test_multicast_multipeer.c | |||
@@ -35,9 +35,10 @@ | |||
35 | 35 | ||
36 | #define PEERS_REQUESTED 12 | 36 | #define PEERS_REQUESTED 12 |
37 | 37 | ||
38 | struct multicast_peer | 38 | struct MulticastPeerContext |
39 | { | 39 | { |
40 | int peer; /* peer number */ | 40 | int peer; /* peer number */ |
41 | struct GNUNET_CRYPTO_EcdsaPrivateKey *key; | ||
41 | const struct GNUNET_PeerIdentity *id; | 42 | const struct GNUNET_PeerIdentity *id; |
42 | struct GNUNET_TESTBED_Operation *op; /* not yet in use */ | 43 | struct GNUNET_TESTBED_Operation *op; /* not yet in use */ |
43 | struct GNUNET_TESTBED_Operation *pi_op; /* not yet in use */ | 44 | struct GNUNET_TESTBED_Operation *pi_op; /* not yet in use */ |
@@ -61,7 +62,7 @@ static void service_connect (void *cls, | |||
61 | void *ca_result, | 62 | void *ca_result, |
62 | const char *emsg); | 63 | const char *emsg); |
63 | 64 | ||
64 | static struct multicast_peer **mc_peers; | 65 | static struct MulticastPeerContext **multicast_peers; |
65 | static struct GNUNET_TESTBED_Peer **peers; | 66 | static struct GNUNET_TESTBED_Peer **peers; |
66 | 67 | ||
67 | // FIXME: refactor | 68 | // FIXME: refactor |
@@ -69,18 +70,14 @@ static struct GNUNET_TESTBED_Operation *op[PEERS_REQUESTED]; | |||
69 | static struct GNUNET_TESTBED_Operation *pi_op[PEERS_REQUESTED]; | 70 | static struct GNUNET_TESTBED_Operation *pi_op[PEERS_REQUESTED]; |
70 | 71 | ||
71 | static struct GNUNET_MULTICAST_Origin *origin; | 72 | static struct GNUNET_MULTICAST_Origin *origin; |
72 | static struct GNUNET_MULTICAST_Member *member[PEERS_REQUESTED]; /* first element always empty */ | 73 | static struct GNUNET_MULTICAST_Member *members[PEERS_REQUESTED]; /* first element always empty */ |
73 | 74 | ||
74 | static struct GNUNET_SCHEDULER_Task *timeout_tid; | 75 | static struct GNUNET_SCHEDULER_Task *timeout_tid; |
75 | 76 | ||
76 | static struct GNUNET_CRYPTO_EddsaPrivateKey group_key; | 77 | //static struct GNUNET_CRYPTO_EddsaPrivateKey *group_key; |
77 | static struct GNUNET_CRYPTO_EddsaPublicKey group_pub_key; | 78 | static struct GNUNET_CRYPTO_EddsaPublicKey group_pub_key; |
78 | static struct GNUNET_HashCode group_pub_key_hash; | 79 | static struct GNUNET_HashCode group_pub_key_hash; |
79 | 80 | ||
80 | static struct GNUNET_CRYPTO_EcdsaPrivateKey *member_key[PEERS_REQUESTED]; | ||
81 | static struct GNUNET_CRYPTO_EcdsaPublicKey *member_pub_key[PEERS_REQUESTED]; | ||
82 | |||
83 | |||
84 | /** | 81 | /** |
85 | * Global result for testcase. | 82 | * Global result for testcase. |
86 | */ | 83 | */ |
@@ -93,6 +90,8 @@ static int result; | |||
93 | static void | 90 | static void |
94 | shutdown_task (void *cls) | 91 | shutdown_task (void *cls) |
95 | { | 92 | { |
93 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
94 | "shutdown_task!\n"); | ||
96 | for (int i=0;i<PEERS_REQUESTED;i++) | 95 | for (int i=0;i<PEERS_REQUESTED;i++) |
97 | { | 96 | { |
98 | if (NULL != op[i]) | 97 | if (NULL != op[i]) |
@@ -107,14 +106,16 @@ shutdown_task (void *cls) | |||
107 | } | 106 | } |
108 | } | 107 | } |
109 | 108 | ||
110 | if (NULL != mc_peers) | 109 | if (NULL != multicast_peers) |
111 | { | 110 | { |
112 | for (int i=0; i < PEERS_REQUESTED; i++) | 111 | for (int i=0; i < PEERS_REQUESTED; i++) |
113 | { | 112 | { |
114 | GNUNET_free (mc_peers[i]); | 113 | GNUNET_free (multicast_peers[i]->key); |
115 | mc_peers[i] = NULL; | 114 | GNUNET_free (multicast_peers[i]); |
115 | multicast_peers[i] = NULL; | ||
116 | } | 116 | } |
117 | GNUNET_free (mc_peers); | 117 | GNUNET_free (multicast_peers); |
118 | multicast_peers = NULL; | ||
118 | } | 119 | } |
119 | 120 | ||
120 | if (NULL != timeout_tid) | 121 | if (NULL != timeout_tid) |
@@ -141,11 +142,11 @@ member_join_request (void *cls, | |||
141 | const struct GNUNET_MessageHeader *join_msg, | 142 | const struct GNUNET_MessageHeader *join_msg, |
142 | struct GNUNET_MULTICAST_JoinHandle *jh) | 143 | struct GNUNET_MULTICAST_JoinHandle *jh) |
143 | { | 144 | { |
144 | struct multicast_peer *mc_peer = (struct multicast_peer*)cls; | 145 | struct MulticastPeerContext *mc_peer = (struct MulticastPeerContext*)cls; |
145 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 146 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, |
146 | "Peer #%u (%s) sent a join request.\n", | 147 | "Peer #%u (%s) sent a join request.\n", |
147 | mc_peer->peer, | 148 | mc_peer->peer, |
148 | GNUNET_i2s (mc_peers[mc_peer->peer]->id)); | 149 | GNUNET_i2s (multicast_peers[mc_peer->peer]->id)); |
149 | } | 150 | } |
150 | 151 | ||
151 | 152 | ||
@@ -154,7 +155,7 @@ notify (void *cls, | |||
154 | size_t *data_size, | 155 | size_t *data_size, |
155 | void *data) | 156 | void *data) |
156 | { | 157 | { |
157 | struct multicast_peer *mc_peer = (struct multicast_peer*)cls; | 158 | struct MulticastPeerContext *mc_peer = (struct MulticastPeerContext*)cls; |
158 | 159 | ||
159 | struct pingpong_msg *pp_msg = GNUNET_new (struct pingpong_msg); | 160 | struct pingpong_msg *pp_msg = GNUNET_new (struct pingpong_msg); |
160 | pp_msg->peer = mc_peer->peer; | 161 | pp_msg->peer = mc_peer->peer; |
@@ -178,18 +179,18 @@ member_join_decision (void *cls, | |||
178 | const struct GNUNET_PeerIdentity *relays, | 179 | const struct GNUNET_PeerIdentity *relays, |
179 | const struct GNUNET_MessageHeader *join_msg) | 180 | const struct GNUNET_MessageHeader *join_msg) |
180 | { | 181 | { |
181 | struct multicast_peer *mc_peer = (struct multicast_peer*)cls; | 182 | struct MulticastPeerContext *mc_peer = (struct MulticastPeerContext*)cls; |
182 | struct GNUNET_MULTICAST_MemberTransmitHandle *req; | 183 | struct GNUNET_MULTICAST_MemberTransmitHandle *req; |
183 | 184 | ||
184 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 185 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, |
185 | "Peer #%u (%s) received a decision from origin: %s\n", | 186 | "Peer #%u (%s) received a decision from origin: %s\n", |
186 | mc_peer->peer, | 187 | mc_peer->peer, |
187 | GNUNET_i2s (mc_peers[mc_peer->peer]->id), | 188 | GNUNET_i2s (multicast_peers[mc_peer->peer]->id), |
188 | (GNUNET_YES == is_admitted)?"accepted":"rejected"); | 189 | (GNUNET_YES == is_admitted)?"accepted":"rejected"); |
189 | 190 | ||
190 | if (GNUNET_YES == is_admitted) | 191 | if (GNUNET_YES == is_admitted) |
191 | { | 192 | { |
192 | req = GNUNET_MULTICAST_member_to_origin (member[mc_peer->peer], | 193 | req = GNUNET_MULTICAST_member_to_origin (members[mc_peer->peer], |
193 | 0, | 194 | 0, |
194 | notify, | 195 | notify, |
195 | cls); | 196 | cls); |
@@ -215,10 +216,32 @@ member_replay_msg () | |||
215 | 216 | ||
216 | 217 | ||
217 | static void | 218 | static void |
219 | origin_disconnected_cb (void *cls) | ||
220 | { | ||
221 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
222 | "Origin disconnected. Shutting down.\n"); | ||
223 | result = GNUNET_YES; | ||
224 | GNUNET_SCHEDULER_shutdown (); | ||
225 | } | ||
226 | |||
227 | |||
228 | static void | ||
229 | member_disconnected_cb (void *cls) | ||
230 | { | ||
231 | for (int i = 1; i < PEERS_REQUESTED; ++i) | ||
232 | if (GNUNET_NO == multicast_peers[i]->test_ok) | ||
233 | return; | ||
234 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
235 | "All member disconnected. Stopping origin.\n"); | ||
236 | GNUNET_MULTICAST_origin_stop (origin, origin_disconnected_cb, cls); | ||
237 | } | ||
238 | |||
239 | |||
240 | static void | ||
218 | member_message (void *cls, | 241 | member_message (void *cls, |
219 | const struct GNUNET_MULTICAST_MessageHeader *msg) | 242 | const struct GNUNET_MULTICAST_MessageHeader *msg) |
220 | { | 243 | { |
221 | struct multicast_peer *mc_peer = (struct multicast_peer*)cls; | 244 | struct MulticastPeerContext *mc_peer = (struct MulticastPeerContext*)cls; |
222 | struct pingpong_msg *pp_msg = (struct pingpong_msg*) &(msg[1]); | 245 | struct pingpong_msg *pp_msg = (struct pingpong_msg*) &(msg[1]); |
223 | 246 | ||
224 | if (PONG == pp_msg->msg && mc_peer->peer == pp_msg->peer) | 247 | if (PONG == pp_msg->msg && mc_peer->peer == pp_msg->peer) |
@@ -226,18 +249,15 @@ member_message (void *cls, | |||
226 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 249 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, |
227 | "peer #%i (%s) receives a pong\n", | 250 | "peer #%i (%s) receives a pong\n", |
228 | mc_peer->peer, | 251 | mc_peer->peer, |
229 | GNUNET_i2s (mc_peers[mc_peer->peer]->id)); | 252 | GNUNET_i2s (multicast_peers[mc_peer->peer]->id)); |
230 | |||
231 | mc_peer->test_ok = GNUNET_OK; | 253 | mc_peer->test_ok = GNUNET_OK; |
232 | } | 254 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, |
233 | 255 | "peer #%u (%s) parting from multicast group\n", | |
234 | // Test for completeness of received PONGs | 256 | mc_peer->peer, |
235 | for (int i=1; i<PEERS_REQUESTED; i++) | 257 | GNUNET_i2s (multicast_peers[mc_peer->peer]->id)); |
236 | if (GNUNET_NO == mc_peers[i]->test_ok) | ||
237 | return; | ||
238 | 258 | ||
239 | result = GNUNET_YES; | 259 | GNUNET_MULTICAST_member_part (members[mc_peer->peer], member_disconnected_cb, cls); |
240 | GNUNET_SCHEDULER_shutdown(); | 260 | } |
241 | } | 261 | } |
242 | 262 | ||
243 | 263 | ||
@@ -349,81 +369,53 @@ origin_message (void *cls, | |||
349 | 369 | ||
350 | 370 | ||
351 | static void | 371 | static void |
352 | multicast_da (void *cls, | 372 | multicast_disconnect (void *cls, |
353 | void *op_result) | 373 | void *op_result) |
354 | { | 374 | { |
355 | struct multicast_peer *mc_peer = (struct multicast_peer*)cls; | ||
356 | 375 | ||
357 | if (0 == mc_peer->peer) | ||
358 | { | ||
359 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | ||
360 | "Origin closes multicast group\n"); | ||
361 | |||
362 | GNUNET_MULTICAST_origin_stop (origin, NULL, cls); | ||
363 | } | ||
364 | else | ||
365 | { | ||
366 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | ||
367 | "peer #%u (%s) parting from multicast group\n", | ||
368 | mc_peer->peer, | ||
369 | GNUNET_i2s (mc_peers[mc_peer->peer]->id)); | ||
370 | |||
371 | GNUNET_MULTICAST_member_part (member[mc_peer->peer], NULL, cls); | ||
372 | } | ||
373 | } | 376 | } |
374 | 377 | ||
375 | 378 | ||
376 | static void * | 379 | static void * |
377 | multicast_ca (void *cls, | 380 | multicast_connect (void *cls, |
378 | const struct GNUNET_CONFIGURATION_Handle *cfg) | 381 | const struct GNUNET_CONFIGURATION_Handle *cfg) |
379 | { | 382 | { |
380 | struct multicast_peer *mc_peer = (struct multicast_peer*)cls; | 383 | struct MulticastPeerContext *multicast_peer = cls; |
381 | struct GNUNET_MessageHeader *join_msg; | 384 | struct GNUNET_MessageHeader *join_msg; |
382 | char data[64]; | 385 | char data[64]; |
383 | 386 | ||
384 | if (0 == mc_peer->peer) | 387 | multicast_peer->key = GNUNET_CRYPTO_ecdsa_key_create (); |
388 | if (0 == multicast_peer->peer) | ||
385 | { | 389 | { |
386 | struct GNUNET_CRYPTO_EddsaPrivateKey *key = GNUNET_CRYPTO_eddsa_key_create (); | 390 | GNUNET_CRYPTO_eddsa_key_get_public (multicast_peer->key, &group_pub_key); |
387 | GNUNET_CRYPTO_eddsa_key_get_public (key, &group_pub_key); | ||
388 | GNUNET_CRYPTO_hash (&group_pub_key, sizeof (group_pub_key), &group_pub_key_hash); | 391 | GNUNET_CRYPTO_hash (&group_pub_key, sizeof (group_pub_key), &group_pub_key_hash); |
389 | |||
390 | group_key = *key; | ||
391 | |||
392 | origin = GNUNET_MULTICAST_origin_start (cfg, | 392 | origin = GNUNET_MULTICAST_origin_start (cfg, |
393 | &group_key, | 393 | multicast_peer->key, |
394 | 0, | 394 | 0, |
395 | origin_join_request, | 395 | origin_join_request, |
396 | origin_replay_frag, | 396 | origin_replay_frag, |
397 | origin_replay_msg, | 397 | origin_replay_msg, |
398 | origin_request, | 398 | origin_request, |
399 | origin_message, | 399 | origin_message, |
400 | cls); | 400 | cls); |
401 | 401 | if (NULL == origin) | |
402 | if (NULL == origin) { | 402 | { |
403 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 403 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, |
404 | "Peer #%u could not create a multicast group", | 404 | "Peer #%u could not create a multicast group", |
405 | mc_peer->peer); | 405 | multicast_peer->peer); |
406 | return NULL; | 406 | return NULL; |
407 | } | 407 | } |
408 | |||
409 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 408 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, |
410 | "Peer #%u connected as origin to group %s\n", | 409 | "Peer #%u connected as origin to group %s\n", |
411 | mc_peer->peer, | 410 | multicast_peer->peer, |
412 | GNUNET_h2s (&group_pub_key_hash)); | 411 | GNUNET_h2s (&group_pub_key_hash)); |
413 | |||
414 | return origin; | 412 | return origin; |
415 | } | 413 | } |
416 | else | 414 | else |
417 | { | 415 | { |
418 | // Get members keys | ||
419 | member_pub_key[mc_peer->peer] = GNUNET_new (struct GNUNET_CRYPTO_EcdsaPublicKey); | ||
420 | member_key[mc_peer->peer] = GNUNET_CRYPTO_ecdsa_key_create (); | ||
421 | GNUNET_CRYPTO_ecdsa_key_get_public (member_key[mc_peer->peer], | ||
422 | member_pub_key[mc_peer->peer]); | ||
423 | |||
424 | sprintf(data, "Hi, I am peer #%u (%s). Can I enter?", | 416 | sprintf(data, "Hi, I am peer #%u (%s). Can I enter?", |
425 | mc_peer->peer, | 417 | multicast_peer->peer, |
426 | GNUNET_i2s (mc_peers[mc_peer->peer]->id)); | 418 | GNUNET_i2s (multicast_peers[multicast_peer->peer]->id)); |
427 | uint8_t data_size = strlen (data) + 1; | 419 | uint8_t data_size = strlen (data) + 1; |
428 | join_msg = GNUNET_malloc (sizeof (join_msg) + data_size); | 420 | join_msg = GNUNET_malloc (sizeof (join_msg) + data_size); |
429 | join_msg->size = htons (sizeof (join_msg) + data_size); | 421 | join_msg->size = htons (sizeof (join_msg) + data_size); |
@@ -432,24 +424,25 @@ multicast_ca (void *cls, | |||
432 | 424 | ||
433 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 425 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, |
434 | "Peer #%u (%s) tries to join multicast group %s\n", | 426 | "Peer #%u (%s) tries to join multicast group %s\n", |
435 | mc_peer->peer, | 427 | multicast_peer->peer, |
436 | GNUNET_i2s (mc_peers[mc_peer->peer]->id), | 428 | GNUNET_i2s (multicast_peers[multicast_peer->peer]->id), |
437 | GNUNET_h2s (&group_pub_key_hash)); | 429 | GNUNET_h2s (&group_pub_key_hash)); |
438 | 430 | ||
439 | member[mc_peer->peer] = GNUNET_MULTICAST_member_join (cfg, | 431 | members[multicast_peer->peer] = |
440 | &group_pub_key, | 432 | GNUNET_MULTICAST_member_join (cfg, |
441 | member_key[mc_peer->peer], | 433 | &group_pub_key, |
442 | mc_peers[0]->id, | 434 | multicast_peer->key, |
443 | 0, | 435 | multicast_peers[0]->id, |
444 | NULL, | 436 | 0, |
445 | join_msg, /* join message */ | 437 | NULL, |
446 | member_join_request, | 438 | join_msg, /* join message */ |
447 | member_join_decision, | 439 | member_join_request, |
448 | member_replay_frag, | 440 | member_join_decision, |
449 | member_replay_msg, | 441 | member_replay_frag, |
450 | member_message, | 442 | member_replay_msg, |
451 | cls); | 443 | member_message, |
452 | return member[mc_peer->peer]; | 444 | cls); |
445 | return members[multicast_peer->peer]; | ||
453 | } | 446 | } |
454 | } | 447 | } |
455 | 448 | ||
@@ -460,7 +453,7 @@ peer_information_cb (void *cls, | |||
460 | const struct GNUNET_TESTBED_PeerInformation *pinfo, | 453 | const struct GNUNET_TESTBED_PeerInformation *pinfo, |
461 | const char *emsg) | 454 | const char *emsg) |
462 | { | 455 | { |
463 | struct multicast_peer *mc_peer = (struct multicast_peer*)cls; | 456 | struct MulticastPeerContext *mc_peer = (struct MulticastPeerContext*)cls; |
464 | 457 | ||
465 | if (NULL == pinfo) { | 458 | if (NULL == pinfo) { |
466 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, "got no peer information\n"); | 459 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, "got no peer information\n"); |
@@ -468,7 +461,7 @@ peer_information_cb (void *cls, | |||
468 | GNUNET_SCHEDULER_shutdown (); | 461 | GNUNET_SCHEDULER_shutdown (); |
469 | } | 462 | } |
470 | 463 | ||
471 | mc_peers[mc_peer->peer]->id = pinfo->result.id; | 464 | multicast_peers[mc_peer->peer]->id = pinfo->result.id; |
472 | 465 | ||
473 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 466 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, |
474 | "Got peer information of %s (%s)\n", | 467 | "Got peer information of %s (%s)\n", |
@@ -478,22 +471,28 @@ peer_information_cb (void *cls, | |||
478 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 471 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, |
479 | "Create peer #%u (%s)\n", | 472 | "Create peer #%u (%s)\n", |
480 | mc_peer->peer, | 473 | mc_peer->peer, |
481 | GNUNET_i2s (mc_peers[mc_peer->peer]->id)); | 474 | GNUNET_i2s (multicast_peers[mc_peer->peer]->id)); |
482 | 475 | ||
483 | if (0 != mc_peer->peer) | 476 | if (0 != mc_peer->peer) |
484 | { | 477 | { |
485 | /* connect to multicast service of members */ | 478 | /* connect to multicast service of members */ |
486 | op[mc_peer->peer] = GNUNET_TESTBED_service_connect (NULL, /* Closure for operation */ | 479 | op[mc_peer->peer] = |
487 | peers[mc_peer->peer], /* The peer whose service to connect to */ | 480 | GNUNET_TESTBED_service_connect (/* Closure for operation */ |
488 | "multicast", /* The name of the service */ | 481 | NULL, |
489 | service_connect, /* callback to call after a handle to service | 482 | /* The peer whose service to connect to */ |
490 | is opened */ | 483 | peers[mc_peer->peer], |
491 | cls, /* closure for the above callback */ | 484 | /* The name of the service */ |
492 | multicast_ca, /* callback to call with peer's configuration; | 485 | "multicast", |
493 | this should open the needed service connection */ | 486 | /* called after a handle to service is opened */ |
494 | multicast_da, /* callback to be called when closing the | 487 | service_connect, |
495 | opened service connection */ | 488 | /* closure for the above callback */ |
496 | cls); /* closure for the above two callbacks */ | 489 | cls, |
490 | /* called when opening the service connection */ | ||
491 | multicast_connect, | ||
492 | /* called when closing the service connection */ | ||
493 | multicast_disconnect, | ||
494 | /* closure for the above two callbacks */ | ||
495 | cls); | ||
497 | } | 496 | } |
498 | } | 497 | } |
499 | 498 | ||
@@ -504,14 +503,14 @@ service_connect (void *cls, | |||
504 | void *ca_result, | 503 | void *ca_result, |
505 | const char *emsg) | 504 | const char *emsg) |
506 | { | 505 | { |
507 | struct multicast_peer *mc_peer = (struct multicast_peer*)cls; | 506 | struct MulticastPeerContext *mc_peer = (struct MulticastPeerContext*)cls; |
508 | 507 | ||
509 | if (NULL == ca_result) | 508 | if (NULL == ca_result) |
510 | { | 509 | { |
511 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 510 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, |
512 | "Connection adapter not created for peer #%u (%s)\n", | 511 | "Connection adapter not created for peer #%u (%s)\n", |
513 | mc_peer->peer, | 512 | mc_peer->peer, |
514 | GNUNET_i2s (mc_peers[mc_peer->peer]->id)); | 513 | GNUNET_i2s (multicast_peers[mc_peer->peer]->id)); |
515 | 514 | ||
516 | result = GNUNET_SYSERR; | 515 | result = GNUNET_SYSERR; |
517 | GNUNET_SCHEDULER_shutdown(); | 516 | GNUNET_SCHEDULER_shutdown(); |
@@ -525,7 +524,7 @@ service_connect (void *cls, | |||
525 | pi_op[i] = GNUNET_TESTBED_peer_get_information (peers[i], | 524 | pi_op[i] = GNUNET_TESTBED_peer_get_information (peers[i], |
526 | GNUNET_TESTBED_PIT_IDENTITY, | 525 | GNUNET_TESTBED_PIT_IDENTITY, |
527 | peer_information_cb, | 526 | peer_information_cb, |
528 | mc_peers[i]); | 527 | multicast_peers[i]); |
529 | } | 528 | } |
530 | } | 529 | } |
531 | } | 530 | } |
@@ -549,50 +548,51 @@ service_connect (void *cls, | |||
549 | * @param links_failed number of links testbed was unable to establish | 548 | * @param links_failed number of links testbed was unable to establish |
550 | */ static void | 549 | */ static void |
551 | testbed_master (void *cls, | 550 | testbed_master (void *cls, |
552 | struct GNUNET_TESTBED_RunHandle *h, | 551 | struct GNUNET_TESTBED_RunHandle *h, |
553 | unsigned int num_peers, | 552 | unsigned int num_peers, |
554 | struct GNUNET_TESTBED_Peer **p, | 553 | struct GNUNET_TESTBED_Peer **p, |
555 | unsigned int links_succeeded, | 554 | unsigned int links_succeeded, |
556 | unsigned int links_failed) | 555 | unsigned int links_failed) |
557 | { | 556 | { |
558 | /* Testbed is ready with peers running and connected in a pre-defined overlay | 557 | /* Testbed is ready with peers running and connected in a pre-defined overlay |
559 | topology (FIXME) */ | 558 | topology (FIXME) */ |
560 | |||
561 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | ||
562 | "Connected to testbed_master()\n"); | ||
563 | |||
564 | peers = p; | 559 | peers = p; |
565 | 560 | multicast_peers = GNUNET_new_array (PEERS_REQUESTED, struct MulticastPeerContext*); | |
566 | mc_peers = GNUNET_new_array (PEERS_REQUESTED, struct multicast_peer*); | ||
567 | 561 | ||
568 | // Create test contexts for members | 562 | // Create test contexts for members |
569 | for (int i = 0; i<PEERS_REQUESTED; i++) | 563 | for (int i = 0; i<PEERS_REQUESTED; i++) |
570 | { | 564 | { |
571 | mc_peers[i] = GNUNET_new (struct multicast_peer); | 565 | multicast_peers[i] = GNUNET_new (struct MulticastPeerContext); |
572 | mc_peers[i]->peer = i; | 566 | multicast_peers[i]->peer = i; |
573 | mc_peers[i]->test_ok = GNUNET_NO; | 567 | multicast_peers[i]->test_ok = GNUNET_NO; |
574 | } | 568 | } |
575 | |||
576 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 569 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, |
577 | "Create origin peer\n"); | 570 | "Create origin peer\n"); |
578 | 571 | op[0] = | |
579 | op[0] = GNUNET_TESTBED_service_connect (NULL, /* Closure for operation */ | 572 | GNUNET_TESTBED_service_connect (/* Closure for operation */ |
580 | peers[0], /* The peer whose service to connect to */ | 573 | NULL, |
581 | "multicast", /* The name of the service */ | 574 | /* The peer whose service to connect to */ |
582 | service_connect, /* callback to call after a handle to service | 575 | peers[0], |
583 | is opened */ | 576 | /* The name of the service */ |
584 | mc_peers[0], /* closure for the above callback */ | 577 | "multicast", |
585 | multicast_ca, /* callback to call with peer's configuration; | 578 | /* called after a handle to service is opened */ |
586 | this should open the needed service connection */ | 579 | service_connect, |
587 | multicast_da, /* callback to be called when closing the | 580 | /* closure for the above callback */ |
588 | opened service connection */ | 581 | multicast_peers[0], |
589 | mc_peers[0]); /* closure for the above two callbacks */ | 582 | /* called when opening the service connection */ |
590 | 583 | multicast_connect, | |
591 | GNUNET_SCHEDULER_add_shutdown (&shutdown_task, NULL); /* Schedule a new task on shutdown */ | 584 | /* called when closing the service connection */ |
592 | 585 | multicast_disconnect, | |
586 | /* closure for the above two callbacks */ | ||
587 | multicast_peers[0]); | ||
588 | /* Schedule a new task on shutdown */ | ||
589 | GNUNET_SCHEDULER_add_shutdown (&shutdown_task, NULL); | ||
593 | /* Schedule the shutdown task with a delay of a few Seconds */ | 590 | /* Schedule the shutdown task with a delay of a few Seconds */ |
594 | timeout_tid = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS, 400), | 591 | timeout_tid = |
595 | &timeout_task, NULL); | 592 | GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply |
593 | (GNUNET_TIME_UNIT_SECONDS, 400), | ||
594 | &timeout_task, | ||
595 | NULL); | ||
596 | } | 596 | } |
597 | 597 | ||
598 | 598 | ||
@@ -616,15 +616,21 @@ main (int argc, char *argv[]) | |||
616 | } | 616 | } |
617 | 617 | ||
618 | result = GNUNET_SYSERR; | 618 | result = GNUNET_SYSERR; |
619 | ret = GNUNET_TESTBED_test_run | 619 | ret = |
620 | ("test-multicast-multipeer", /* test case name */ | 620 | GNUNET_TESTBED_test_run ("test-multicast-multipeer", |
621 | config_file, /* template configuration */ | 621 | config_file, |
622 | PEERS_REQUESTED, /* number of peers to start */ | 622 | /* number of peers to start */ |
623 | 0LL, /* Event mask - set to 0 for no event notifications */ | 623 | PEERS_REQUESTED, |
624 | NULL, /* Controller event callback */ | 624 | /* Event mask - set to 0 for no event notifications */ |
625 | NULL, /* Closure for controller event callback */ | 625 | 0LL, |
626 | testbed_master, /* continuation callback to be called when testbed setup is complete */ | 626 | /* Controller event callback */ |
627 | NULL); /* Closure for the test_master callback */ | 627 | NULL, |
628 | /* Closure for controller event callback */ | ||
629 | NULL, | ||
630 | /* called when testbed setup is complete */ | ||
631 | testbed_master, | ||
632 | /* Closure for the test_master callback */ | ||
633 | NULL); | ||
628 | if ( (GNUNET_OK != ret) || (GNUNET_OK != result) ) | 634 | if ( (GNUNET_OK != ret) || (GNUNET_OK != result) ) |
629 | return 1; | 635 | return 1; |
630 | return 0; | 636 | return 0; |
diff --git a/src/psyc/gnunet-service-psyc.c b/src/psyc/gnunet-service-psyc.c index 73a3ae4ee..cf161435a 100644 --- a/src/psyc/gnunet-service-psyc.c +++ b/src/psyc/gnunet-service-psyc.c | |||
@@ -279,7 +279,7 @@ struct Channel | |||
279 | * Is the client disconnected? | 279 | * Is the client disconnected? |
280 | * #GNUNET_YES or #GNUNET_NO | 280 | * #GNUNET_YES or #GNUNET_NO |
281 | */ | 281 | */ |
282 | uint8_t is_disconnected; | 282 | uint8_t is_disconnecting; |
283 | 283 | ||
284 | /** | 284 | /** |
285 | * Is this a channel master (#GNUNET_YES), or slave (#GNUNET_NO)? | 285 | * Is this a channel master (#GNUNET_YES), or slave (#GNUNET_NO)? |
@@ -508,8 +508,6 @@ cleanup_master (struct Master *mst) | |||
508 | { | 508 | { |
509 | struct Channel *chn = &mst->channel; | 509 | struct Channel *chn = &mst->channel; |
510 | 510 | ||
511 | if (NULL != mst->origin) | ||
512 | GNUNET_MULTICAST_origin_stop (mst->origin, NULL, NULL); // FIXME | ||
513 | GNUNET_CONTAINER_multihashmap_destroy (mst->join_reqs); | 511 | GNUNET_CONTAINER_multihashmap_destroy (mst->join_reqs); |
514 | GNUNET_CONTAINER_multihashmap_remove (masters, &chn->pub_key_hash, mst); | 512 | GNUNET_CONTAINER_multihashmap_remove (masters, &chn->pub_key_hash, mst); |
515 | } | 513 | } |
@@ -546,11 +544,6 @@ cleanup_slave (struct Slave *slv) | |||
546 | GNUNET_free (slv->relays); | 544 | GNUNET_free (slv->relays); |
547 | slv->relays = NULL; | 545 | slv->relays = NULL; |
548 | } | 546 | } |
549 | if (NULL != slv->member) | ||
550 | { | ||
551 | GNUNET_MULTICAST_member_part (slv->member, NULL, NULL); // FIXME | ||
552 | slv->member = NULL; | ||
553 | } | ||
554 | GNUNET_CONTAINER_multihashmap_remove (slaves, &chn->pub_key_hash, slv); | 547 | GNUNET_CONTAINER_multihashmap_remove (slaves, &chn->pub_key_hash, slv); |
555 | } | 548 | } |
556 | 549 | ||
@@ -603,15 +596,16 @@ client_notify_disconnect (void *cls, | |||
603 | if (NULL == chn) | 596 | if (NULL == chn) |
604 | { | 597 | { |
605 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 598 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
606 | "%p User context is NULL in client_disconnect()\n", | 599 | "%p User context is NULL in client_notify_disconnect ()\n", |
607 | chn); | 600 | chn); |
608 | GNUNET_break (0); | 601 | GNUNET_break (0); |
609 | return; | 602 | return; |
610 | } | 603 | } |
611 | 604 | ||
612 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 605 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
613 | "%p Client (%s) disconnected from channel %s\n", | 606 | "%p Client %p (%s) disconnected from channel %s\n", |
614 | chn, | 607 | chn, |
608 | client, | ||
615 | (GNUNET_YES == chn->is_master) ? "master" : "slave", | 609 | (GNUNET_YES == chn->is_master) ? "master" : "slave", |
616 | GNUNET_h2s (&chn->pub_key_hash)); | 610 | GNUNET_h2s (&chn->pub_key_hash)); |
617 | 611 | ||
@@ -645,15 +639,8 @@ client_notify_disconnect (void *cls, | |||
645 | chn, | 639 | chn, |
646 | (GNUNET_YES == chn->is_master) ? "master" : "slave", | 640 | (GNUNET_YES == chn->is_master) ? "master" : "slave", |
647 | GNUNET_h2s (&chn->pub_key_hash)); | 641 | GNUNET_h2s (&chn->pub_key_hash)); |
648 | chn->is_disconnected = GNUNET_YES; | 642 | chn->is_disconnecting = GNUNET_YES; |
649 | if (NULL != chn->tmit_head) | 643 | cleanup_channel (chn); |
650 | { /* Send pending messages to multicast before cleanup. */ | ||
651 | transmit_message (chn); | ||
652 | } | ||
653 | else | ||
654 | { | ||
655 | cleanup_channel (chn); | ||
656 | } | ||
657 | } | 644 | } |
658 | } | 645 | } |
659 | 646 | ||
@@ -688,7 +675,7 @@ client_send_msg (const struct Channel *chn, | |||
688 | const struct GNUNET_MessageHeader *msg) | 675 | const struct GNUNET_MessageHeader *msg) |
689 | { | 676 | { |
690 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 677 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
691 | "%p Sending message to clients.\n", | 678 | "Sending message to clients of channel %p.\n", |
692 | chn); | 679 | chn); |
693 | 680 | ||
694 | struct ClientList *cli = chn->clients_head; | 681 | struct ClientList *cli = chn->clients_head; |
@@ -699,7 +686,6 @@ client_send_msg (const struct Channel *chn, | |||
699 | 686 | ||
700 | GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (cli->client), | 687 | GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (cli->client), |
701 | env); | 688 | env); |
702 | |||
703 | cli = cli->next; | 689 | cli = cli->next; |
704 | } | 690 | } |
705 | } | 691 | } |
@@ -734,7 +720,7 @@ client_send_result (struct GNUNET_SERVICE_Client *client, uint64_t op_id, | |||
734 | GNUNET_memcpy (&res[1], data, data_size); | 720 | GNUNET_memcpy (&res[1], data, data_size); |
735 | 721 | ||
736 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 722 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
737 | "%p Sending result to client for operation #%" PRIu64 ": %" PRId64 " (size: %u)\n", | 723 | "%p Sending result to client for OP ID %" PRIu64 ": %" PRId64 " (size: %u)\n", |
738 | client, | 724 | client, |
739 | GNUNET_ntohll (op_id), | 725 | GNUNET_ntohll (op_id), |
740 | result_code, | 726 | result_code, |
@@ -1202,12 +1188,12 @@ fragment_queue_insert (struct Channel *chn, | |||
1202 | else if (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_METHOD == first_ptype | 1188 | else if (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_METHOD == first_ptype |
1203 | || frag_offset == fragq->header_size) | 1189 | || frag_offset == fragq->header_size) |
1204 | { /* header is now complete */ | 1190 | { /* header is now complete */ |
1205 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 1191 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
1206 | "%p Header of message %" PRIu64 " is complete.\n", | 1192 | "%p Header of message %" PRIu64 " is complete.\n", |
1207 | chn, | 1193 | chn, |
1208 | GNUNET_ntohll (mmsg->message_id)); | 1194 | GNUNET_ntohll (mmsg->message_id)); |
1209 | 1195 | ||
1210 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 1196 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
1211 | "%p Adding message %" PRIu64 " to queue.\n", | 1197 | "%p Adding message %" PRIu64 " to queue.\n", |
1212 | chn, | 1198 | chn, |
1213 | GNUNET_ntohll (mmsg->message_id)); | 1199 | GNUNET_ntohll (mmsg->message_id)); |
@@ -1215,7 +1201,7 @@ fragment_queue_insert (struct Channel *chn, | |||
1215 | } | 1201 | } |
1216 | else | 1202 | else |
1217 | { | 1203 | { |
1218 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 1204 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
1219 | "%p Header of message %" PRIu64 " is NOT complete yet: %" PRIu64 " != %" PRIu64 "\n", | 1205 | "%p Header of message %" PRIu64 " is NOT complete yet: %" PRIu64 " != %" PRIu64 "\n", |
1220 | chn, | 1206 | chn, |
1221 | GNUNET_ntohll (mmsg->message_id), | 1207 | GNUNET_ntohll (mmsg->message_id), |
@@ -1230,7 +1216,7 @@ fragment_queue_insert (struct Channel *chn, | |||
1230 | if (frag_offset == fragq->size) | 1216 | if (frag_offset == fragq->size) |
1231 | fragq->state = MSG_FRAG_STATE_END; | 1217 | fragq->state = MSG_FRAG_STATE_END; |
1232 | else | 1218 | else |
1233 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 1219 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
1234 | "%p Message %" PRIu64 " is NOT complete yet: %" PRIu64 " != %" PRIu64 "\n", | 1220 | "%p Message %" PRIu64 " is NOT complete yet: %" PRIu64 " != %" PRIu64 "\n", |
1235 | chn, | 1221 | chn, |
1236 | GNUNET_ntohll (mmsg->message_id), | 1222 | GNUNET_ntohll (mmsg->message_id), |
@@ -1285,7 +1271,7 @@ static void | |||
1285 | fragment_queue_run (struct Channel *chn, uint64_t msg_id, | 1271 | fragment_queue_run (struct Channel *chn, uint64_t msg_id, |
1286 | struct FragmentQueue *fragq, uint8_t drop) | 1272 | struct FragmentQueue *fragq, uint8_t drop) |
1287 | { | 1273 | { |
1288 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 1274 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
1289 | "%p Running message fragment queue for message %" PRIu64 " (state: %u).\n", | 1275 | "%p Running message fragment queue for message %" PRIu64 " (state: %u).\n", |
1290 | chn, | 1276 | chn, |
1291 | msg_id, | 1277 | msg_id, |
@@ -1413,7 +1399,7 @@ store_recv_state_modify_result (void *cls, int64_t result, | |||
1413 | static uint64_t | 1399 | static uint64_t |
1414 | message_queue_run (struct Channel *chn) | 1400 | message_queue_run (struct Channel *chn) |
1415 | { | 1401 | { |
1416 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 1402 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
1417 | "%p Running message queue.\n", chn); | 1403 | "%p Running message queue.\n", chn); |
1418 | uint64_t n = 0; | 1404 | uint64_t n = 0; |
1419 | uint64_t msg_id; | 1405 | uint64_t msg_id; |
@@ -1421,7 +1407,7 @@ message_queue_run (struct Channel *chn) | |||
1421 | while (GNUNET_YES == GNUNET_CONTAINER_heap_peek2 (chn->recv_msgs, NULL, | 1407 | while (GNUNET_YES == GNUNET_CONTAINER_heap_peek2 (chn->recv_msgs, NULL, |
1422 | &msg_id)) | 1408 | &msg_id)) |
1423 | { | 1409 | { |
1424 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 1410 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
1425 | "%p Processing message %" PRIu64 " in queue.\n", chn, msg_id); | 1411 | "%p Processing message %" PRIu64 " in queue.\n", chn, msg_id); |
1426 | struct GNUNET_HashCode msg_id_hash; | 1412 | struct GNUNET_HashCode msg_id_hash; |
1427 | hash_key_from_hll (&msg_id_hash, msg_id); | 1413 | hash_key_from_hll (&msg_id_hash, msg_id); |
@@ -1431,7 +1417,7 @@ message_queue_run (struct Channel *chn) | |||
1431 | 1417 | ||
1432 | if (NULL == fragq || fragq->state <= MSG_FRAG_STATE_HEADER) | 1418 | if (NULL == fragq || fragq->state <= MSG_FRAG_STATE_HEADER) |
1433 | { | 1419 | { |
1434 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 1420 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
1435 | "%p No fragq (%p) or header not complete.\n", | 1421 | "%p No fragq (%p) or header not complete.\n", |
1436 | chn, fragq); | 1422 | chn, fragq); |
1437 | break; | 1423 | break; |
@@ -1453,7 +1439,7 @@ message_queue_run (struct Channel *chn) | |||
1453 | && (chn->max_message_id != msg_id - 1 | 1439 | && (chn->max_message_id != msg_id - 1 |
1454 | && chn->max_message_id != msg_id)) | 1440 | && chn->max_message_id != msg_id)) |
1455 | { | 1441 | { |
1456 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 1442 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
1457 | "%p Out of order message. " | 1443 | "%p Out of order message. " |
1458 | "(%" PRIu64 " != %" PRIu64 " - 1)\n", | 1444 | "(%" PRIu64 " != %" PRIu64 " - 1)\n", |
1459 | chn, chn->max_message_id, msg_id); | 1445 | chn, chn->max_message_id, msg_id); |
@@ -1469,7 +1455,7 @@ message_queue_run (struct Channel *chn) | |||
1469 | { | 1455 | { |
1470 | if (msg_id - fragq->state_delta != chn->max_state_message_id) | 1456 | if (msg_id - fragq->state_delta != chn->max_state_message_id) |
1471 | { | 1457 | { |
1472 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 1458 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
1473 | "%p Out of order stateful message. " | 1459 | "%p Out of order stateful message. " |
1474 | "(%" PRIu64 " - %" PRIu64 " != %" PRIu64 ")\n", | 1460 | "(%" PRIu64 " - %" PRIu64 " != %" PRIu64 ")\n", |
1475 | chn, msg_id, fragq->state_delta, chn->max_state_message_id); | 1461 | chn, msg_id, fragq->state_delta, chn->max_state_message_id); |
@@ -1515,8 +1501,6 @@ message_queue_run (struct Channel *chn) | |||
1515 | static uint64_t | 1501 | static uint64_t |
1516 | message_queue_drop (struct Channel *chn) | 1502 | message_queue_drop (struct Channel *chn) |
1517 | { | 1503 | { |
1518 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | ||
1519 | "%p Dropping message queue.\n", chn); | ||
1520 | uint64_t n = 0; | 1504 | uint64_t n = 0; |
1521 | uint64_t msg_id; | 1505 | uint64_t msg_id; |
1522 | while (GNUNET_YES == GNUNET_CONTAINER_heap_peek2 (chn->recv_msgs, NULL, | 1506 | while (GNUNET_YES == GNUNET_CONTAINER_heap_peek2 (chn->recv_msgs, NULL, |
@@ -1703,7 +1687,7 @@ store_recv_slave_counters (void *cls, int result, uint64_t max_fragment_id, | |||
1703 | res.result_code = htonl (result); | 1687 | res.result_code = htonl (result); |
1704 | res.max_message_id = GNUNET_htonll (max_message_id); | 1688 | res.max_message_id = GNUNET_htonll (max_message_id); |
1705 | 1689 | ||
1706 | if (GNUNET_OK == result || GNUNET_NO == result) | 1690 | if (GNUNET_YES == result || GNUNET_NO == result) |
1707 | { | 1691 | { |
1708 | chn->max_message_id = max_message_id; | 1692 | chn->max_message_id = max_message_id; |
1709 | chn->max_state_message_id = max_state_message_id; | 1693 | chn->max_state_message_id = max_state_message_id; |
@@ -1831,6 +1815,9 @@ handle_client_slave_join (void *cls, | |||
1831 | struct GNUNET_CRYPTO_EcdsaPublicKey slv_pub_key; | 1815 | struct GNUNET_CRYPTO_EcdsaPublicKey slv_pub_key; |
1832 | struct GNUNET_HashCode pub_key_hash, slv_pub_hash; | 1816 | struct GNUNET_HashCode pub_key_hash, slv_pub_hash; |
1833 | 1817 | ||
1818 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1819 | "got join request from client %p\n", | ||
1820 | client); | ||
1834 | GNUNET_CRYPTO_ecdsa_key_get_public (&req->slave_key, &slv_pub_key); | 1821 | GNUNET_CRYPTO_ecdsa_key_get_public (&req->slave_key, &slv_pub_key); |
1835 | GNUNET_CRYPTO_hash (&slv_pub_key, sizeof (slv_pub_key), &slv_pub_hash); | 1822 | GNUNET_CRYPTO_hash (&slv_pub_key, sizeof (slv_pub_key), &slv_pub_hash); |
1836 | GNUNET_CRYPTO_hash (&req->channel_pub_key, sizeof (req->channel_pub_key), &pub_key_hash); | 1823 | GNUNET_CRYPTO_hash (&req->channel_pub_key, sizeof (req->channel_pub_key), &pub_key_hash); |
@@ -1905,7 +1892,7 @@ handle_client_slave_join (void *cls, | |||
1905 | GNUNET_CONTAINER_multihashmap_put (slaves, &chn->pub_key_hash, chn, | 1892 | GNUNET_CONTAINER_multihashmap_put (slaves, &chn->pub_key_hash, chn, |
1906 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE); | 1893 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE); |
1907 | chn->store_op = GNUNET_PSYCSTORE_counters_get (store, &chn->pub_key, | 1894 | chn->store_op = GNUNET_PSYCSTORE_counters_get (store, &chn->pub_key, |
1908 | &store_recv_slave_counters, slv); | 1895 | &store_recv_slave_counters, slv); |
1909 | } | 1896 | } |
1910 | else | 1897 | else |
1911 | { | 1898 | { |
@@ -1952,8 +1939,9 @@ handle_client_slave_join (void *cls, | |||
1952 | } | 1939 | } |
1953 | 1940 | ||
1954 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 1941 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
1955 | "%p Client connected as slave to channel %s.\n", | 1942 | "Client %p connected as slave to channel %s.\n", |
1956 | slv, GNUNET_h2s (&chn->pub_key_hash)); | 1943 | client, |
1944 | GNUNET_h2s (&chn->pub_key_hash)); | ||
1957 | 1945 | ||
1958 | struct ClientList *cli = GNUNET_malloc (sizeof (*cli)); | 1946 | struct ClientList *cli = GNUNET_malloc (sizeof (*cli)); |
1959 | cli->client = client; | 1947 | cli->client = client; |
@@ -2037,6 +2025,49 @@ handle_client_join_decision (void *cls, | |||
2037 | } | 2025 | } |
2038 | 2026 | ||
2039 | 2027 | ||
2028 | static void | ||
2029 | channel_part_cb (void *cls) | ||
2030 | { | ||
2031 | struct GNUNET_SERVICE_Client *client = cls; | ||
2032 | struct GNUNET_MQ_Envelope *env; | ||
2033 | |||
2034 | env = GNUNET_MQ_msg_header (GNUNET_MESSAGE_TYPE_PSYC_PART_ACK); | ||
2035 | GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client), | ||
2036 | env); | ||
2037 | } | ||
2038 | |||
2039 | |||
2040 | static void | ||
2041 | handle_client_part_request (void *cls, | ||
2042 | const struct GNUNET_MessageHeader *msg) | ||
2043 | { | ||
2044 | struct Client *c = cls; | ||
2045 | |||
2046 | c->channel->is_disconnecting = GNUNET_YES; | ||
2047 | if (GNUNET_YES == c->channel->is_master) | ||
2048 | { | ||
2049 | struct Master *mst = (struct Master *) c->channel; | ||
2050 | |||
2051 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
2052 | "Got part request from master %p\n", | ||
2053 | mst); | ||
2054 | GNUNET_assert (NULL != mst->origin); | ||
2055 | GNUNET_MULTICAST_origin_stop (mst->origin, channel_part_cb, c->client); | ||
2056 | } | ||
2057 | else | ||
2058 | { | ||
2059 | struct Slave *slv = (struct Slave *) c->channel; | ||
2060 | |||
2061 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
2062 | "Got part request from slave %p\n", | ||
2063 | slv); | ||
2064 | GNUNET_assert (NULL != slv->member); | ||
2065 | GNUNET_MULTICAST_member_part (slv->member, channel_part_cb, c->client); | ||
2066 | } | ||
2067 | GNUNET_SERVICE_client_continue (c->client); | ||
2068 | } | ||
2069 | |||
2070 | |||
2040 | /** | 2071 | /** |
2041 | * Send acknowledgement to a client. | 2072 | * Send acknowledgement to a client. |
2042 | * | 2073 | * |
@@ -2096,7 +2127,7 @@ transmit_notify (void *cls, size_t *data_size, void *data) | |||
2096 | { | 2127 | { |
2097 | GNUNET_SCHEDULER_add_now (&schedule_transmit_message, chn); | 2128 | GNUNET_SCHEDULER_add_now (&schedule_transmit_message, chn); |
2098 | } | 2129 | } |
2099 | else if (GNUNET_YES == chn->is_disconnected | 2130 | else if (GNUNET_YES == chn->is_disconnecting |
2100 | && tmit_msg->last_ptype < GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_END) | 2131 | && tmit_msg->last_ptype < GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_END) |
2101 | { | 2132 | { |
2102 | /* FIXME: handle partial message (when still in_transmit) */ | 2133 | /* FIXME: handle partial message (when still in_transmit) */ |
@@ -2208,12 +2239,10 @@ transmit_message (struct Channel *chn) | |||
2208 | static void | 2239 | static void |
2209 | master_queue_message (struct Master *mst, struct TransmitMessage *tmit_msg) | 2240 | master_queue_message (struct Master *mst, struct TransmitMessage *tmit_msg) |
2210 | { | 2241 | { |
2211 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "%p master_queue_message()\n", mst); | ||
2212 | |||
2213 | if (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_METHOD == tmit_msg->first_ptype) | 2242 | if (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_METHOD == tmit_msg->first_ptype) |
2214 | { | 2243 | { |
2215 | tmit_msg->id = ++mst->max_message_id; | 2244 | tmit_msg->id = ++mst->max_message_id; |
2216 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 2245 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
2217 | "%p master_queue_message: message_id=%" PRIu64 "\n", | 2246 | "%p master_queue_message: message_id=%" PRIu64 "\n", |
2218 | mst, tmit_msg->id); | 2247 | mst, tmit_msg->id); |
2219 | struct GNUNET_PSYC_MessageMethod *pmeth | 2248 | struct GNUNET_PSYC_MessageMethod *pmeth |
@@ -2225,7 +2254,7 @@ master_queue_message (struct Master *mst, struct TransmitMessage *tmit_msg) | |||
2225 | } | 2254 | } |
2226 | else if (pmeth->flags & GNUNET_PSYC_MASTER_TRANSMIT_STATE_MODIFY) | 2255 | else if (pmeth->flags & GNUNET_PSYC_MASTER_TRANSMIT_STATE_MODIFY) |
2227 | { | 2256 | { |
2228 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 2257 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
2229 | "%p master_queue_message: state_delta=%" PRIu64 "\n", | 2258 | "%p master_queue_message: state_delta=%" PRIu64 "\n", |
2230 | mst, tmit_msg->id - mst->max_state_message_id); | 2259 | mst, tmit_msg->id - mst->max_state_message_id); |
2231 | pmeth->state_delta = GNUNET_htonll (tmit_msg->id | 2260 | pmeth->state_delta = GNUNET_htonll (tmit_msg->id |
@@ -2234,7 +2263,7 @@ master_queue_message (struct Master *mst, struct TransmitMessage *tmit_msg) | |||
2234 | } | 2263 | } |
2235 | else | 2264 | else |
2236 | { | 2265 | { |
2237 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 2266 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
2238 | "%p master_queue_message: state not modified\n", mst); | 2267 | "%p master_queue_message: state not modified\n", mst); |
2239 | pmeth->state_delta = GNUNET_htonll (GNUNET_PSYC_STATE_NOT_MODIFIED); | 2268 | pmeth->state_delta = GNUNET_htonll (GNUNET_PSYC_STATE_NOT_MODIFIED); |
2240 | } | 2269 | } |
@@ -2359,7 +2388,9 @@ handle_client_psyc_message (void *cls, | |||
2359 | if (GNUNET_YES != chn->is_ready) | 2388 | if (GNUNET_YES != chn->is_ready) |
2360 | { | 2389 | { |
2361 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 2390 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, |
2362 | "%p Channel is not ready yet, disconnecting client.\n", chn); | 2391 | "%p Channel is not ready yet, disconnecting client %p.\n", |
2392 | chn, | ||
2393 | client); | ||
2363 | GNUNET_break (0); | 2394 | GNUNET_break (0); |
2364 | GNUNET_SERVICE_client_drop (client); | 2395 | GNUNET_SERVICE_client_drop (client); |
2365 | return; | 2396 | return; |
@@ -2789,9 +2820,9 @@ run (void *cls, | |||
2789 | GNUNET_SERVICE_MAIN | 2820 | GNUNET_SERVICE_MAIN |
2790 | ("psyc", | 2821 | ("psyc", |
2791 | GNUNET_SERVICE_OPTION_NONE, | 2822 | GNUNET_SERVICE_OPTION_NONE, |
2792 | run, | 2823 | &run, |
2793 | client_notify_connect, | 2824 | &client_notify_connect, |
2794 | client_notify_disconnect, | 2825 | &client_notify_disconnect, |
2795 | NULL, | 2826 | NULL, |
2796 | GNUNET_MQ_hd_fixed_size (client_master_start, | 2827 | GNUNET_MQ_hd_fixed_size (client_master_start, |
2797 | GNUNET_MESSAGE_TYPE_PSYC_MASTER_START, | 2828 | GNUNET_MESSAGE_TYPE_PSYC_MASTER_START, |
@@ -2805,6 +2836,10 @@ GNUNET_SERVICE_MAIN | |||
2805 | GNUNET_MESSAGE_TYPE_PSYC_JOIN_DECISION, | 2836 | GNUNET_MESSAGE_TYPE_PSYC_JOIN_DECISION, |
2806 | struct GNUNET_PSYC_JoinDecisionMessage, | 2837 | struct GNUNET_PSYC_JoinDecisionMessage, |
2807 | NULL), | 2838 | NULL), |
2839 | GNUNET_MQ_hd_fixed_size (client_part_request, | ||
2840 | GNUNET_MESSAGE_TYPE_PSYC_PART_REQUEST, | ||
2841 | struct GNUNET_MessageHeader, | ||
2842 | NULL), | ||
2808 | GNUNET_MQ_hd_var_size (client_psyc_message, | 2843 | GNUNET_MQ_hd_var_size (client_psyc_message, |
2809 | GNUNET_MESSAGE_TYPE_PSYC_MESSAGE, | 2844 | GNUNET_MESSAGE_TYPE_PSYC_MESSAGE, |
2810 | struct GNUNET_MessageHeader, | 2845 | struct GNUNET_MessageHeader, |
diff --git a/src/psyc/psyc_api.c b/src/psyc/psyc_api.c index c93d8b383..d8f4c98bc 100644 --- a/src/psyc/psyc_api.c +++ b/src/psyc/psyc_api.c | |||
@@ -260,6 +260,10 @@ handle_channel_result (void *cls, | |||
260 | GNUNET_OP_result (chn->op, GNUNET_ntohll (res->op_id), | 260 | GNUNET_OP_result (chn->op, GNUNET_ntohll (res->op_id), |
261 | GNUNET_ntohll (res->result_code), | 261 | GNUNET_ntohll (res->result_code), |
262 | data, data_size, NULL); | 262 | data, data_size, NULL); |
263 | |||
264 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
265 | "handle_channel_result: Received result message with OP ID %" PRIu64 "\n", | ||
266 | GNUNET_ntohll (res->op_id)); | ||
263 | } | 267 | } |
264 | 268 | ||
265 | 269 | ||
@@ -555,6 +559,9 @@ handle_slave_join_decision (void *cls, | |||
555 | static void | 559 | static void |
556 | channel_cleanup (struct GNUNET_PSYC_Channel *chn) | 560 | channel_cleanup (struct GNUNET_PSYC_Channel *chn) |
557 | { | 561 | { |
562 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
563 | "cleaning up channel %p\n", | ||
564 | chn); | ||
558 | if (NULL != chn->tmit) | 565 | if (NULL != chn->tmit) |
559 | { | 566 | { |
560 | GNUNET_PSYC_transmit_destroy (chn->tmit); | 567 | GNUNET_PSYC_transmit_destroy (chn->tmit); |
@@ -562,6 +569,7 @@ channel_cleanup (struct GNUNET_PSYC_Channel *chn) | |||
562 | } | 569 | } |
563 | if (NULL != chn->recv) | 570 | if (NULL != chn->recv) |
564 | { | 571 | { |
572 | |||
565 | GNUNET_PSYC_receive_destroy (chn->recv); | 573 | GNUNET_PSYC_receive_destroy (chn->recv); |
566 | chn->recv = NULL; | 574 | chn->recv = NULL; |
567 | } | 575 | } |
@@ -585,30 +593,12 @@ channel_cleanup (struct GNUNET_PSYC_Channel *chn) | |||
585 | 593 | ||
586 | 594 | ||
587 | static void | 595 | static void |
588 | channel_disconnect (struct GNUNET_PSYC_Channel *chn, | 596 | handle_channel_part_ack (void *cls, |
589 | GNUNET_ContinuationCallback cb, | 597 | const struct GNUNET_MessageHeader *msg) |
590 | void *cls) | ||
591 | { | 598 | { |
592 | chn->is_disconnecting = GNUNET_YES; | 599 | struct GNUNET_PSYC_Channel *chn = cls; |
593 | chn->disconnect_cb = cb; | ||
594 | chn->disconnect_cls = cls; | ||
595 | 600 | ||
596 | if (NULL != chn->mq) | 601 | channel_cleanup (chn); |
597 | { | ||
598 | struct GNUNET_MQ_Envelope *env = GNUNET_MQ_get_last_envelope (chn->mq); | ||
599 | if (NULL != env) | ||
600 | { | ||
601 | GNUNET_MQ_notify_sent (env, (GNUNET_SCHEDULER_TaskCallback) channel_cleanup, chn); | ||
602 | } | ||
603 | else | ||
604 | { | ||
605 | channel_cleanup (chn); | ||
606 | } | ||
607 | } | ||
608 | else | ||
609 | { | ||
610 | channel_cleanup (chn); | ||
611 | } | ||
612 | } | 602 | } |
613 | 603 | ||
614 | 604 | ||
@@ -671,6 +661,10 @@ master_connect (struct GNUNET_PSYC_Master *mst) | |||
671 | GNUNET_MESSAGE_TYPE_PSYC_JOIN_REQUEST, | 661 | GNUNET_MESSAGE_TYPE_PSYC_JOIN_REQUEST, |
672 | struct GNUNET_PSYC_JoinRequestMessage, | 662 | struct GNUNET_PSYC_JoinRequestMessage, |
673 | mst), | 663 | mst), |
664 | GNUNET_MQ_hd_fixed_size (channel_part_ack, | ||
665 | GNUNET_MESSAGE_TYPE_PSYC_PART_ACK, | ||
666 | struct GNUNET_MessageHeader, | ||
667 | chn), | ||
674 | GNUNET_MQ_hd_var_size (channel_message, | 668 | GNUNET_MQ_hd_var_size (channel_message, |
675 | GNUNET_MESSAGE_TYPE_PSYC_MESSAGE, | 669 | GNUNET_MESSAGE_TYPE_PSYC_MESSAGE, |
676 | struct GNUNET_PSYC_MessageHeader, | 670 | struct GNUNET_PSYC_MessageHeader, |
@@ -694,8 +688,11 @@ master_connect (struct GNUNET_PSYC_Master *mst) | |||
694 | GNUNET_MQ_handler_end () | 688 | GNUNET_MQ_handler_end () |
695 | }; | 689 | }; |
696 | 690 | ||
697 | chn->mq = GNUNET_CLIENT_connect (chn->cfg, "psyc", | 691 | chn->mq = GNUNET_CLIENT_connect (chn->cfg, |
698 | handlers, master_disconnected, mst); | 692 | "psyc", |
693 | handlers, | ||
694 | &master_disconnected, | ||
695 | mst); | ||
699 | GNUNET_assert (NULL != chn->mq); | 696 | GNUNET_assert (NULL != chn->mq); |
700 | chn->tmit = GNUNET_PSYC_transmit_create (chn->mq); | 697 | chn->tmit = GNUNET_PSYC_transmit_create (chn->mq); |
701 | 698 | ||
@@ -780,10 +777,13 @@ GNUNET_PSYC_master_stop (struct GNUNET_PSYC_Master *mst, | |||
780 | void *stop_cls) | 777 | void *stop_cls) |
781 | { | 778 | { |
782 | struct GNUNET_PSYC_Channel *chn = &mst->chn; | 779 | struct GNUNET_PSYC_Channel *chn = &mst->chn; |
780 | struct GNUNET_MQ_Envelope *env; | ||
783 | 781 | ||
784 | /* FIXME: send msg to service */ | 782 | chn->is_disconnecting = GNUNET_YES; |
785 | 783 | chn->disconnect_cb = stop_cb; | |
786 | channel_disconnect (chn, stop_cb, stop_cls); | 784 | chn->disconnect_cls = stop_cls; |
785 | env = GNUNET_MQ_msg_header (GNUNET_MESSAGE_TYPE_PSYC_PART_REQUEST); | ||
786 | GNUNET_MQ_send (chn->mq, env); | ||
787 | } | 787 | } |
788 | 788 | ||
789 | 789 | ||
@@ -931,7 +931,8 @@ slave_reconnect (void *cls) | |||
931 | * Reconnect after backoff period. | 931 | * Reconnect after backoff period. |
932 | */ | 932 | */ |
933 | static void | 933 | static void |
934 | slave_disconnected (void *cls, enum GNUNET_MQ_Error error) | 934 | slave_disconnected (void *cls, |
935 | enum GNUNET_MQ_Error error) | ||
935 | { | 936 | { |
936 | struct GNUNET_PSYC_Slave *slv = cls; | 937 | struct GNUNET_PSYC_Slave *slv = cls; |
937 | struct GNUNET_PSYC_Channel *chn = &slv->chn; | 938 | struct GNUNET_PSYC_Channel *chn = &slv->chn; |
@@ -950,7 +951,7 @@ slave_disconnected (void *cls, enum GNUNET_MQ_Error error) | |||
950 | chn->mq = NULL; | 951 | chn->mq = NULL; |
951 | } | 952 | } |
952 | chn->reconnect_task = GNUNET_SCHEDULER_add_delayed (chn->reconnect_delay, | 953 | chn->reconnect_task = GNUNET_SCHEDULER_add_delayed (chn->reconnect_delay, |
953 | slave_reconnect, | 954 | &slave_reconnect, |
954 | slv); | 955 | slv); |
955 | chn->reconnect_delay = GNUNET_TIME_STD_BACKOFF (chn->reconnect_delay); | 956 | chn->reconnect_delay = GNUNET_TIME_STD_BACKOFF (chn->reconnect_delay); |
956 | } | 957 | } |
@@ -970,6 +971,10 @@ slave_connect (struct GNUNET_PSYC_Slave *slv) | |||
970 | GNUNET_MESSAGE_TYPE_PSYC_JOIN_DECISION, | 971 | GNUNET_MESSAGE_TYPE_PSYC_JOIN_DECISION, |
971 | struct GNUNET_PSYC_JoinDecisionMessage, | 972 | struct GNUNET_PSYC_JoinDecisionMessage, |
972 | slv), | 973 | slv), |
974 | GNUNET_MQ_hd_fixed_size (channel_part_ack, | ||
975 | GNUNET_MESSAGE_TYPE_PSYC_PART_ACK, | ||
976 | struct GNUNET_MessageHeader, | ||
977 | chn), | ||
973 | GNUNET_MQ_hd_var_size (channel_message, | 978 | GNUNET_MQ_hd_var_size (channel_message, |
974 | GNUNET_MESSAGE_TYPE_PSYC_MESSAGE, | 979 | GNUNET_MESSAGE_TYPE_PSYC_MESSAGE, |
975 | struct GNUNET_PSYC_MessageHeader, | 980 | struct GNUNET_PSYC_MessageHeader, |
@@ -993,9 +998,19 @@ slave_connect (struct GNUNET_PSYC_Slave *slv) | |||
993 | GNUNET_MQ_handler_end () | 998 | GNUNET_MQ_handler_end () |
994 | }; | 999 | }; |
995 | 1000 | ||
996 | chn->mq = GNUNET_CLIENT_connect (chn->cfg, "psyc", | 1001 | chn->mq = GNUNET_CLIENT_connect (chn->cfg, |
997 | handlers, slave_disconnected, slv); | 1002 | "psyc", |
998 | GNUNET_assert (NULL != chn->mq); | 1003 | handlers, |
1004 | &slave_disconnected, | ||
1005 | slv); | ||
1006 | if (NULL == chn->mq) | ||
1007 | { | ||
1008 | chn->reconnect_task = GNUNET_SCHEDULER_add_delayed (chn->reconnect_delay, | ||
1009 | &slave_reconnect, | ||
1010 | slv); | ||
1011 | chn->reconnect_delay = GNUNET_TIME_STD_BACKOFF (chn->reconnect_delay); | ||
1012 | return; | ||
1013 | } | ||
999 | chn->tmit = GNUNET_PSYC_transmit_create (chn->mq); | 1014 | chn->tmit = GNUNET_PSYC_transmit_create (chn->mq); |
1000 | 1015 | ||
1001 | GNUNET_MQ_send_copy (chn->mq, chn->connect_env); | 1016 | GNUNET_MQ_send_copy (chn->mq, chn->connect_env); |
@@ -1107,10 +1122,13 @@ GNUNET_PSYC_slave_part (struct GNUNET_PSYC_Slave *slv, | |||
1107 | void *part_cls) | 1122 | void *part_cls) |
1108 | { | 1123 | { |
1109 | struct GNUNET_PSYC_Channel *chn = &slv->chn; | 1124 | struct GNUNET_PSYC_Channel *chn = &slv->chn; |
1125 | struct GNUNET_MQ_Envelope *env; | ||
1110 | 1126 | ||
1111 | /* FIXME: send msg to service */ | 1127 | chn->is_disconnecting = GNUNET_YES; |
1112 | 1128 | chn->disconnect_cb = part_cb; | |
1113 | channel_disconnect (chn, part_cb, part_cls); | 1129 | chn->disconnect_cls = part_cls; |
1130 | env = GNUNET_MQ_msg_header (GNUNET_MESSAGE_TYPE_PSYC_PART_REQUEST); | ||
1131 | GNUNET_MQ_send (chn->mq, env); | ||
1114 | } | 1132 | } |
1115 | 1133 | ||
1116 | 1134 | ||
@@ -1233,6 +1251,9 @@ GNUNET_PSYC_channel_slave_add (struct GNUNET_PSYC_Channel *chn, | |||
1233 | req->did_join = GNUNET_YES; | 1251 | req->did_join = GNUNET_YES; |
1234 | req->op_id = GNUNET_htonll (GNUNET_OP_add (chn->op, result_cb, cls, NULL)); | 1252 | req->op_id = GNUNET_htonll (GNUNET_OP_add (chn->op, result_cb, cls, NULL)); |
1235 | 1253 | ||
1254 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1255 | "GNUNET_PSYC_channel_slave_add, OP ID: %" PRIu64 "\n", | ||
1256 | GNUNET_ntohll (req->op_id)); | ||
1236 | GNUNET_MQ_send (chn->mq, env); | 1257 | GNUNET_MQ_send (chn->mq, env); |
1237 | } | 1258 | } |
1238 | 1259 | ||
@@ -1283,6 +1304,9 @@ GNUNET_PSYC_channel_slave_remove (struct GNUNET_PSYC_Channel *chn, | |||
1283 | req->did_join = GNUNET_NO; | 1304 | req->did_join = GNUNET_NO; |
1284 | req->op_id = GNUNET_htonll (GNUNET_OP_add (chn->op, result_cb, cls, NULL)); | 1305 | req->op_id = GNUNET_htonll (GNUNET_OP_add (chn->op, result_cb, cls, NULL)); |
1285 | 1306 | ||
1307 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1308 | "GNUNET_PSYC_channel_slave_remove, OP ID: %" PRIu64 "\n", | ||
1309 | GNUNET_ntohll (req->op_id)); | ||
1286 | GNUNET_MQ_send (chn->mq, env); | 1310 | GNUNET_MQ_send (chn->mq, env); |
1287 | } | 1311 | } |
1288 | 1312 | ||
@@ -1321,6 +1345,10 @@ channel_history_replay (struct GNUNET_PSYC_Channel *chn, | |||
1321 | req->message_limit = GNUNET_htonll (message_limit); | 1345 | req->message_limit = GNUNET_htonll (message_limit); |
1322 | req->flags = htonl (flags); | 1346 | req->flags = htonl (flags); |
1323 | req->op_id = GNUNET_htonll (hist->op_id); | 1347 | req->op_id = GNUNET_htonll (hist->op_id); |
1348 | |||
1349 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1350 | "channel_history_replay, OP ID: %" PRIu64 "\n", | ||
1351 | GNUNET_ntohll (req->op_id)); | ||
1324 | GNUNET_memcpy (&req[1], method_prefix, method_size); | 1352 | GNUNET_memcpy (&req[1], method_prefix, method_size); |
1325 | 1353 | ||
1326 | GNUNET_MQ_send (chn->mq, env); | 1354 | GNUNET_MQ_send (chn->mq, env); |
@@ -1459,6 +1487,11 @@ channel_state_get (struct GNUNET_PSYC_Channel *chn, | |||
1459 | struct GNUNET_MQ_Envelope * | 1487 | struct GNUNET_MQ_Envelope * |
1460 | env = GNUNET_MQ_msg_extra (req, name_size, type); | 1488 | env = GNUNET_MQ_msg_extra (req, name_size, type); |
1461 | req->op_id = GNUNET_htonll (sr->op_id); | 1489 | req->op_id = GNUNET_htonll (sr->op_id); |
1490 | |||
1491 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1492 | "channel_state_get, OP ID: %" PRIu64 "\n", | ||
1493 | GNUNET_ntohll (req->op_id)); | ||
1494 | |||
1462 | GNUNET_memcpy (&req[1], name, name_size); | 1495 | GNUNET_memcpy (&req[1], name, name_size); |
1463 | 1496 | ||
1464 | GNUNET_MQ_send (chn->mq, env); | 1497 | GNUNET_MQ_send (chn->mq, env); |
diff --git a/src/psyc/test_psyc.c b/src/psyc/test_psyc.c index 03a1890b1..370befb9d 100644 --- a/src/psyc/test_psyc.c +++ b/src/psyc/test_psyc.c | |||
@@ -755,15 +755,22 @@ slave_add () | |||
755 | 755 | ||
756 | 756 | ||
757 | static void | 757 | static void |
758 | schedule_second_slave_join (void *cls) | ||
759 | { | ||
760 | slave_join (TEST_SLAVE_JOIN_ACCEPT); | ||
761 | } | ||
762 | |||
763 | |||
764 | static void | ||
758 | first_slave_parted (void *cls) | 765 | first_slave_parted (void *cls) |
759 | { | 766 | { |
760 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "First slave parted.\n"); | 767 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "First slave parted.\n"); |
761 | slave_join (TEST_SLAVE_JOIN_ACCEPT); | 768 | GNUNET_SCHEDULER_add_now (&schedule_second_slave_join, NULL); |
762 | } | 769 | } |
763 | 770 | ||
764 | 771 | ||
765 | static void | 772 | static void |
766 | schedule_slave_part (void *cls) | 773 | schedule_first_slave_part (void *cls) |
767 | { | 774 | { |
768 | GNUNET_PSYC_slave_part (slv, GNUNET_NO, &first_slave_parted, NULL); | 775 | GNUNET_PSYC_slave_part (slv, GNUNET_NO, &first_slave_parted, NULL); |
769 | } | 776 | } |
@@ -783,7 +790,7 @@ join_decision_cb (void *cls, | |||
783 | case TEST_SLAVE_JOIN_REJECT: | 790 | case TEST_SLAVE_JOIN_REJECT: |
784 | GNUNET_assert (0 == is_admitted); | 791 | GNUNET_assert (0 == is_admitted); |
785 | GNUNET_assert (1 == join_req_count); | 792 | GNUNET_assert (1 == join_req_count); |
786 | GNUNET_SCHEDULER_add_now (&schedule_slave_part, NULL); | 793 | GNUNET_SCHEDULER_add_now (&schedule_first_slave_part, NULL); |
787 | break; | 794 | break; |
788 | 795 | ||
789 | case TEST_SLAVE_JOIN_ACCEPT: | 796 | case TEST_SLAVE_JOIN_ACCEPT: |
@@ -844,11 +851,18 @@ slave_join (int t) | |||
844 | struct GNUNET_PSYC_Message * | 851 | struct GNUNET_PSYC_Message * |
845 | join_msg = GNUNET_PSYC_message_create ("_request_join", env, "some data", 9); | 852 | join_msg = GNUNET_PSYC_message_create ("_request_join", env, "some data", 9); |
846 | 853 | ||
847 | slv = GNUNET_PSYC_slave_join (cfg, &channel_pub_key, slave_key, | 854 | slv = GNUNET_PSYC_slave_join (cfg, |
855 | &channel_pub_key, | ||
856 | slave_key, | ||
848 | GNUNET_PSYC_SLAVE_JOIN_NONE, | 857 | GNUNET_PSYC_SLAVE_JOIN_NONE, |
849 | &origin, 0, NULL, | 858 | &origin, |
850 | &slave_message_cb, &slave_message_part_cb, | 859 | 0, |
851 | &slave_connect_cb, &join_decision_cb, NULL, | 860 | NULL, |
861 | &slave_message_cb, | ||
862 | &slave_message_part_cb, | ||
863 | &slave_connect_cb, | ||
864 | &join_decision_cb, | ||
865 | NULL, | ||
852 | join_msg); | 866 | join_msg); |
853 | GNUNET_free (join_msg); | 867 | GNUNET_free (join_msg); |
854 | slv_chn = GNUNET_PSYC_slave_get_channel (slv); | 868 | slv_chn = GNUNET_PSYC_slave_get_channel (slv); |
diff --git a/src/psyc/test_psyc.conf b/src/psyc/test_psyc.conf index e69de29bb..e00a614d2 100644 --- a/src/psyc/test_psyc.conf +++ b/src/psyc/test_psyc.conf | |||
@@ -0,0 +1,16 @@ | |||
1 | @INLINE@ ../../contrib/no_forcestart.conf | ||
2 | |||
3 | [PATHS] | ||
4 | GNUNET_TEST_HOME = /tmp/gnunet-test-psyc/ | ||
5 | |||
6 | [transport] | ||
7 | PLUGINS = tcp | ||
8 | |||
9 | [nat] | ||
10 | DISABLEV6 = YES | ||
11 | ENABLE_UPNP = NO | ||
12 | BEHIND_NAT = NO | ||
13 | ALLOW_NAT = NO | ||
14 | INTERNAL_ADDRESS = 127.0.0.1 | ||
15 | EXTERNAL_ADDRESS = 127.0.0.1 | ||
16 | |||
diff --git a/src/psycstore/psycstore_api.c b/src/psycstore/psycstore_api.c index d79daa357..16f4a1ae9 100644 --- a/src/psycstore/psycstore_api.c +++ b/src/psycstore/psycstore_api.c | |||
@@ -148,14 +148,14 @@ handle_result_code (void *cls, const struct OperationResult *opres) | |||
148 | str, size - sizeof (*opres), (void **) &op)) | 148 | str, size - sizeof (*opres), (void **) &op)) |
149 | { | 149 | { |
150 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 150 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
151 | "handle_result_code: Received result message with operation ID: %" PRIu64 "\n", | 151 | "handle_result_code: Received result message with OP ID: %" PRIu64 "\n", |
152 | GNUNET_ntohll (opres->op_id)); | 152 | GNUNET_ntohll (opres->op_id)); |
153 | GNUNET_free (op); | 153 | GNUNET_free (op); |
154 | } | 154 | } |
155 | else | 155 | else |
156 | { | 156 | { |
157 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 157 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
158 | "handle_result_code: No callback registered for operation with ID %" PRIu64 ".\n", | 158 | "handle_result_code: No callback registered for OP ID %" PRIu64 ".\n", |
159 | GNUNET_ntohll (opres->op_id)); | 159 | GNUNET_ntohll (opres->op_id)); |
160 | } | 160 | } |
161 | h->reconnect_delay = GNUNET_TIME_UNIT_MILLISECONDS; | 161 | h->reconnect_delay = GNUNET_TIME_UNIT_MILLISECONDS; |
@@ -187,7 +187,7 @@ handle_result_counters (void *cls, const struct CountersResult *cres) | |||
187 | else | 187 | else |
188 | { | 188 | { |
189 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 189 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
190 | "handle_result_counters: No callback registered for operation with ID %" PRIu64 ".\n", | 190 | "handle_result_counters: No callback registered for OP ID %" PRIu64 ".\n", |
191 | GNUNET_ntohll (cres->op_id)); | 191 | GNUNET_ntohll (cres->op_id)); |
192 | } | 192 | } |
193 | h->reconnect_delay = GNUNET_TIME_UNIT_MILLISECONDS; | 193 | h->reconnect_delay = GNUNET_TIME_UNIT_MILLISECONDS; |
@@ -233,7 +233,7 @@ handle_result_fragment (void *cls, const struct FragmentResult *fres) | |||
233 | else | 233 | else |
234 | { | 234 | { |
235 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 235 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
236 | "handle_result_fragment: No callback registered for operation with ID %" PRIu64 ".\n", | 236 | "handle_result_fragment: No callback registered for OP ID %" PRIu64 ".\n", |
237 | GNUNET_ntohll (fres->op_id)); | 237 | GNUNET_ntohll (fres->op_id)); |
238 | } | 238 | } |
239 | h->reconnect_delay = GNUNET_TIME_UNIT_MILLISECONDS; | 239 | h->reconnect_delay = GNUNET_TIME_UNIT_MILLISECONDS; |
@@ -282,7 +282,7 @@ handle_result_state (void *cls, const struct StateResult *sres) | |||
282 | else | 282 | else |
283 | { | 283 | { |
284 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 284 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
285 | "handle_result_state: No callback registered for operation with ID %" PRIu64 ".\n", | 285 | "handle_result_state: No callback registered for OP ID %" PRIu64 ".\n", |
286 | GNUNET_ntohll (sres->op_id)); | 286 | GNUNET_ntohll (sres->op_id)); |
287 | } | 287 | } |
288 | h->reconnect_delay = GNUNET_TIME_UNIT_MILLISECONDS; | 288 | h->reconnect_delay = GNUNET_TIME_UNIT_MILLISECONDS; |
diff --git a/src/rest/Makefile.am b/src/rest/Makefile.am index c0feb9122..ebfb98024 100644 --- a/src/rest/Makefile.am +++ b/src/rest/Makefile.am | |||
@@ -26,6 +26,8 @@ lib_LTLIBRARIES = \ | |||
26 | libexec_PROGRAMS = \ | 26 | libexec_PROGRAMS = \ |
27 | gnunet-rest-server | 27 | gnunet-rest-server |
28 | 28 | ||
29 | EXTRA_DIST = \ | ||
30 | rest.conf | ||
29 | 31 | ||
30 | gnunet_rest_server_SOURCES = \ | 32 | gnunet_rest_server_SOURCES = \ |
31 | gnunet-rest-server.c | 33 | gnunet-rest-server.c |
diff --git a/src/rps/.gitignore b/src/rps/.gitignore index 0d460e62c..cb14f5b09 100644 --- a/src/rps/.gitignore +++ b/src/rps/.gitignore | |||
@@ -1,3 +1,15 @@ | |||
1 | gnunet-service-rps | 1 | gnunet-service-rps |
2 | gnunet-rps | 2 | gnunet-rps |
3 | gnunet-rps-profiler | 3 | gnunet-rps-profiler |
4 | test_rps_malicious_1 | ||
5 | test_rps_malicious_2 | ||
6 | test_rps_malicious_3 | ||
7 | test_rps_req_cancel | ||
8 | test_rps_seed_big | ||
9 | test_rps_seed_request | ||
10 | test_rps_single_req | ||
11 | test_service_rps_custommap | ||
12 | test_service_rps_sampler_elem | ||
13 | test_service_rps_view | ||
14 | test_rps_churn | ||
15 | test_service_rps_peers | ||
diff --git a/src/rps/Makefile.am b/src/rps/Makefile.am index e6c8cd929..de3469254 100644 --- a/src/rps/Makefile.am +++ b/src/rps/Makefile.am | |||
@@ -49,7 +49,6 @@ endif | |||
49 | gnunet_service_rps_SOURCES = \ | 49 | gnunet_service_rps_SOURCES = \ |
50 | gnunet-service-rps_sampler_elem.h gnunet-service-rps_sampler_elem.c \ | 50 | gnunet-service-rps_sampler_elem.h gnunet-service-rps_sampler_elem.c \ |
51 | gnunet-service-rps_sampler.h gnunet-service-rps_sampler.c \ | 51 | gnunet-service-rps_sampler.h gnunet-service-rps_sampler.c \ |
52 | gnunet-service-rps_peers.h gnunet-service-rps_peers.c \ | ||
53 | gnunet-service-rps_custommap.h gnunet-service-rps_custommap.c \ | 52 | gnunet-service-rps_custommap.h gnunet-service-rps_custommap.c \ |
54 | gnunet-service-rps_view.h gnunet-service-rps_view.c \ | 53 | gnunet-service-rps_view.h gnunet-service-rps_view.c \ |
55 | rps-test_util.h rps-test_util.c \ | 54 | rps-test_util.h rps-test_util.c \ |
@@ -73,7 +72,6 @@ if HAVE_TESTING | |||
73 | check_PROGRAMS = \ | 72 | check_PROGRAMS = \ |
74 | test_service_rps_view \ | 73 | test_service_rps_view \ |
75 | test_service_rps_custommap \ | 74 | test_service_rps_custommap \ |
76 | test_service_rps_peers \ | ||
77 | test_service_rps_sampler_elem \ | 75 | test_service_rps_sampler_elem \ |
78 | test_rps_malicious_1 \ | 76 | test_rps_malicious_1 \ |
79 | test_rps_malicious_2 \ | 77 | test_rps_malicious_2 \ |
@@ -81,7 +79,8 @@ check_PROGRAMS = \ | |||
81 | test_rps_seed_request \ | 79 | test_rps_seed_request \ |
82 | test_rps_single_req \ | 80 | test_rps_single_req \ |
83 | test_rps_req_cancel \ | 81 | test_rps_req_cancel \ |
84 | test_rps_seed_big | 82 | test_rps_seed_big \ |
83 | test_rps_churn | ||
85 | endif | 84 | endif |
86 | 85 | ||
87 | ld_rps_test_lib = \ | 86 | ld_rps_test_lib = \ |
@@ -105,13 +104,6 @@ test_service_rps_view_SOURCES = \ | |||
105 | test_service_rps_view.c | 104 | test_service_rps_view.c |
106 | test_service_rps_view_LDADD = $(top_builddir)/src/util/libgnunetutil.la | 105 | test_service_rps_view_LDADD = $(top_builddir)/src/util/libgnunetutil.la |
107 | 106 | ||
108 | test_service_rps_peers_SOURCES = \ | ||
109 | gnunet-service-rps_peers.h gnunet-service-rps_peers.c \ | ||
110 | test_service_rps_peers.c | ||
111 | test_service_rps_peers_LDADD = \ | ||
112 | $(top_builddir)/src/util/libgnunetutil.la \ | ||
113 | $(top_builddir)/src/cadet/libgnunetcadet.la | ||
114 | |||
115 | test_service_rps_custommap_SOURCES = \ | 107 | test_service_rps_custommap_SOURCES = \ |
116 | gnunet-service-rps_custommap.h gnunet-service-rps_custommap.c \ | 108 | gnunet-service-rps_custommap.h gnunet-service-rps_custommap.c \ |
117 | test_service_rps_custommap.c | 109 | test_service_rps_custommap.c |
@@ -145,6 +137,9 @@ test_rps_req_cancel_LDADD = $(ld_rps_test_lib) | |||
145 | test_rps_seed_big_SOURCES = $(rps_test_src) | 137 | test_rps_seed_big_SOURCES = $(rps_test_src) |
146 | test_rps_seed_big_LDADD = $(ld_rps_test_lib) | 138 | test_rps_seed_big_LDADD = $(ld_rps_test_lib) |
147 | 139 | ||
140 | test_rps_churn_SOURCES = $(rps_test_src) | ||
141 | test_rps_churn_LDADD = $(ld_rps_test_lib) | ||
142 | |||
148 | gnunet_rps_profiler_SOURCES = $(rps_test_src) | 143 | gnunet_rps_profiler_SOURCES = $(rps_test_src) |
149 | gnunet_rps_profiler_LDADD = $(ld_rps_test_lib) | 144 | gnunet_rps_profiler_LDADD = $(ld_rps_test_lib) |
150 | 145 | ||
diff --git a/src/rps/gnunet-service-rps.c b/src/rps/gnunet-service-rps.c index 0a4543b30..ec70075cf 100644 --- a/src/rps/gnunet-service-rps.c +++ b/src/rps/gnunet-service-rps.c | |||
@@ -33,7 +33,6 @@ | |||
33 | #include "rps-test_util.h" | 33 | #include "rps-test_util.h" |
34 | #include "gnunet-service-rps_sampler.h" | 34 | #include "gnunet-service-rps_sampler.h" |
35 | #include "gnunet-service-rps_custommap.h" | 35 | #include "gnunet-service-rps_custommap.h" |
36 | #include "gnunet-service-rps_peers.h" | ||
37 | #include "gnunet-service-rps_view.h" | 36 | #include "gnunet-service-rps_view.h" |
38 | 37 | ||
39 | #include <math.h> | 38 | #include <math.h> |
@@ -66,6 +65,1728 @@ static const struct GNUNET_CONFIGURATION_Handle *cfg; | |||
66 | static struct GNUNET_PeerIdentity own_identity; | 65 | static struct GNUNET_PeerIdentity own_identity; |
67 | 66 | ||
68 | 67 | ||
68 | |||
69 | /*********************************************************************** | ||
70 | * Old gnunet-service-rps_peers.c | ||
71 | ***********************************************************************/ | ||
72 | |||
73 | /** | ||
74 | * Set a peer flag of given peer context. | ||
75 | */ | ||
76 | #define set_peer_flag(peer_ctx, mask) ((peer_ctx->peer_flags) |= (mask)) | ||
77 | |||
78 | /** | ||
79 | * Get peer flag of given peer context. | ||
80 | */ | ||
81 | #define check_peer_flag_set(peer_ctx, mask)\ | ||
82 | ((peer_ctx->peer_flags) & (mask) ? GNUNET_YES : GNUNET_NO) | ||
83 | |||
84 | /** | ||
85 | * Unset flag of given peer context. | ||
86 | */ | ||
87 | #define unset_peer_flag(peer_ctx, mask) ((peer_ctx->peer_flags) &= ~(mask)) | ||
88 | |||
89 | /** | ||
90 | * Set a channel flag of given channel context. | ||
91 | */ | ||
92 | #define set_channel_flag(channel_flags, mask) ((*channel_flags) |= (mask)) | ||
93 | |||
94 | /** | ||
95 | * Get channel flag of given channel context. | ||
96 | */ | ||
97 | #define check_channel_flag_set(channel_flags, mask)\ | ||
98 | ((*channel_flags) & (mask) ? GNUNET_YES : GNUNET_NO) | ||
99 | |||
100 | /** | ||
101 | * Unset flag of given channel context. | ||
102 | */ | ||
103 | #define unset_channel_flag(channel_flags, mask) ((*channel_flags) &= ~(mask)) | ||
104 | |||
105 | |||
106 | |||
107 | /** | ||
108 | * Pending operation on peer consisting of callback and closure | ||
109 | * | ||
110 | * When an operation cannot be executed right now this struct is used to store | ||
111 | * the callback and closure for later execution. | ||
112 | */ | ||
113 | struct PeerPendingOp | ||
114 | { | ||
115 | /** | ||
116 | * Callback | ||
117 | */ | ||
118 | PeerOp op; | ||
119 | |||
120 | /** | ||
121 | * Closure | ||
122 | */ | ||
123 | void *op_cls; | ||
124 | }; | ||
125 | |||
126 | /** | ||
127 | * List containing all messages that are yet to be send | ||
128 | * | ||
129 | * This is used to keep track of all messages that have not been sent yet. When | ||
130 | * a peer is to be removed the pending messages can be removed properly. | ||
131 | */ | ||
132 | struct PendingMessage | ||
133 | { | ||
134 | /** | ||
135 | * DLL next, prev | ||
136 | */ | ||
137 | struct PendingMessage *next; | ||
138 | struct PendingMessage *prev; | ||
139 | |||
140 | /** | ||
141 | * The envelope to the corresponding message | ||
142 | */ | ||
143 | struct GNUNET_MQ_Envelope *ev; | ||
144 | |||
145 | /** | ||
146 | * The corresponding context | ||
147 | */ | ||
148 | struct PeerContext *peer_ctx; | ||
149 | |||
150 | /** | ||
151 | * The message type | ||
152 | */ | ||
153 | const char *type; | ||
154 | }; | ||
155 | |||
156 | /** | ||
157 | * Struct used to keep track of other peer's status | ||
158 | * | ||
159 | * This is stored in a multipeermap. | ||
160 | * It contains information such as cadet channels, a message queue for sending, | ||
161 | * status about the channels, the pending operations on this peer and some flags | ||
162 | * about the status of the peer itself. (live, valid, ...) | ||
163 | */ | ||
164 | struct PeerContext | ||
165 | { | ||
166 | /** | ||
167 | * Message queue open to client | ||
168 | */ | ||
169 | struct GNUNET_MQ_Handle *mq; | ||
170 | |||
171 | /** | ||
172 | * Channel open to client. | ||
173 | */ | ||
174 | struct GNUNET_CADET_Channel *send_channel; | ||
175 | |||
176 | /** | ||
177 | * Flags to the sending channel | ||
178 | */ | ||
179 | uint32_t *send_channel_flags; | ||
180 | |||
181 | /** | ||
182 | * Channel open from client. | ||
183 | */ | ||
184 | struct GNUNET_CADET_Channel *recv_channel; // unneeded? | ||
185 | |||
186 | /** | ||
187 | * Flags to the receiving channel | ||
188 | */ | ||
189 | uint32_t *recv_channel_flags; | ||
190 | |||
191 | /** | ||
192 | * Array of pending operations on this peer. | ||
193 | */ | ||
194 | struct PeerPendingOp *pending_ops; | ||
195 | |||
196 | /** | ||
197 | * Handle to the callback given to cadet_ntfy_tmt_rdy() | ||
198 | * | ||
199 | * To be canceled on shutdown. | ||
200 | */ | ||
201 | struct PendingMessage *liveliness_check_pending; | ||
202 | |||
203 | /** | ||
204 | * Number of pending operations. | ||
205 | */ | ||
206 | unsigned int num_pending_ops; | ||
207 | |||
208 | /** | ||
209 | * Identity of the peer | ||
210 | */ | ||
211 | struct GNUNET_PeerIdentity peer_id; | ||
212 | |||
213 | /** | ||
214 | * Flags indicating status of peer | ||
215 | */ | ||
216 | uint32_t peer_flags; | ||
217 | |||
218 | /** | ||
219 | * Last time we received something from that peer. | ||
220 | */ | ||
221 | struct GNUNET_TIME_Absolute last_message_recv; | ||
222 | |||
223 | /** | ||
224 | * Last time we received a keepalive message. | ||
225 | */ | ||
226 | struct GNUNET_TIME_Absolute last_keepalive; | ||
227 | |||
228 | /** | ||
229 | * DLL with all messages that are yet to be sent | ||
230 | */ | ||
231 | struct PendingMessage *pending_messages_head; | ||
232 | struct PendingMessage *pending_messages_tail; | ||
233 | |||
234 | /** | ||
235 | * This is pobably followed by 'statistical' data (when we first saw | ||
236 | * him, how did we get his ID, how many pushes (in a timeinterval), | ||
237 | * ...) | ||
238 | */ | ||
239 | }; | ||
240 | |||
241 | /** | ||
242 | * @brief Closure to #valid_peer_iterator | ||
243 | */ | ||
244 | struct PeersIteratorCls | ||
245 | { | ||
246 | /** | ||
247 | * Iterator function | ||
248 | */ | ||
249 | PeersIterator iterator; | ||
250 | |||
251 | /** | ||
252 | * Closure to iterator | ||
253 | */ | ||
254 | void *cls; | ||
255 | }; | ||
256 | |||
257 | /** | ||
258 | * @brief Hashmap of valid peers. | ||
259 | */ | ||
260 | static struct GNUNET_CONTAINER_MultiPeerMap *valid_peers; | ||
261 | |||
262 | /** | ||
263 | * @brief Maximum number of valid peers to keep. | ||
264 | * TODO read from config | ||
265 | */ | ||
266 | static uint32_t num_valid_peers_max = UINT32_MAX; | ||
267 | |||
268 | /** | ||
269 | * @brief Filename of the file that stores the valid peers persistently. | ||
270 | */ | ||
271 | static char *filename_valid_peers; | ||
272 | |||
273 | /** | ||
274 | * Set of all peers to keep track of them. | ||
275 | */ | ||
276 | static struct GNUNET_CONTAINER_MultiPeerMap *peer_map; | ||
277 | |||
278 | /** | ||
279 | * Cadet handle. | ||
280 | */ | ||
281 | static struct GNUNET_CADET_Handle *cadet_handle; | ||
282 | |||
283 | |||
284 | |||
285 | /** | ||
286 | * @brief Get the #PeerContext associated with a peer | ||
287 | * | ||
288 | * @param peer the peer id | ||
289 | * | ||
290 | * @return the #PeerContext | ||
291 | */ | ||
292 | static struct PeerContext * | ||
293 | get_peer_ctx (const struct GNUNET_PeerIdentity *peer) | ||
294 | { | ||
295 | struct PeerContext *ctx; | ||
296 | int ret; | ||
297 | |||
298 | ret = GNUNET_CONTAINER_multipeermap_contains (peer_map, peer); | ||
299 | GNUNET_assert (GNUNET_YES == ret); | ||
300 | ctx = GNUNET_CONTAINER_multipeermap_get (peer_map, peer); | ||
301 | GNUNET_assert (NULL != ctx); | ||
302 | return ctx; | ||
303 | } | ||
304 | |||
305 | int | ||
306 | Peers_check_peer_known (const struct GNUNET_PeerIdentity *peer); | ||
307 | |||
308 | /** | ||
309 | * @brief Create a new #PeerContext and insert it into the peer map | ||
310 | * | ||
311 | * @param peer the peer to create the #PeerContext for | ||
312 | * | ||
313 | * @return the #PeerContext | ||
314 | */ | ||
315 | static struct PeerContext * | ||
316 | create_peer_ctx (const struct GNUNET_PeerIdentity *peer) | ||
317 | { | ||
318 | struct PeerContext *ctx; | ||
319 | int ret; | ||
320 | |||
321 | GNUNET_assert (GNUNET_NO == Peers_check_peer_known (peer)); | ||
322 | |||
323 | ctx = GNUNET_new (struct PeerContext); | ||
324 | ctx->peer_id = *peer; | ||
325 | ctx->send_channel_flags = GNUNET_new (uint32_t); | ||
326 | ctx->recv_channel_flags = GNUNET_new (uint32_t); | ||
327 | ret = GNUNET_CONTAINER_multipeermap_put (peer_map, peer, ctx, | ||
328 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY); | ||
329 | GNUNET_assert (GNUNET_OK == ret); | ||
330 | return ctx; | ||
331 | } | ||
332 | |||
333 | |||
334 | /** | ||
335 | * @brief Create or get a #PeerContext | ||
336 | * | ||
337 | * @param peer the peer to get the associated context to | ||
338 | * | ||
339 | * @return the context | ||
340 | */ | ||
341 | static struct PeerContext * | ||
342 | create_or_get_peer_ctx (const struct GNUNET_PeerIdentity *peer) | ||
343 | { | ||
344 | if (GNUNET_NO == Peers_check_peer_known (peer)) | ||
345 | { | ||
346 | return create_peer_ctx (peer); | ||
347 | } | ||
348 | return get_peer_ctx (peer); | ||
349 | } | ||
350 | |||
351 | void | ||
352 | Peers_unset_peer_flag (const struct GNUNET_PeerIdentity *peer, enum Peers_PeerFlags flags); | ||
353 | |||
354 | void | ||
355 | Peers_set_peer_flag (const struct GNUNET_PeerIdentity *peer, enum Peers_PeerFlags flags); | ||
356 | |||
357 | /** | ||
358 | * @brief Check whether we have a connection to this @a peer | ||
359 | * | ||
360 | * Also sets the #Peers_ONLINE flag accordingly | ||
361 | * | ||
362 | * @param peer the peer in question | ||
363 | * | ||
364 | * @return #GNUNET_YES if we are connected | ||
365 | * #GNUNET_NO otherwise | ||
366 | */ | ||
367 | int | ||
368 | Peers_check_connected (const struct GNUNET_PeerIdentity *peer) | ||
369 | { | ||
370 | const struct PeerContext *peer_ctx; | ||
371 | |||
372 | /* If we don't know about this peer we don't know whether it's online */ | ||
373 | if (GNUNET_NO == Peers_check_peer_known (peer)) | ||
374 | { | ||
375 | return GNUNET_NO; | ||
376 | } | ||
377 | /* Get the context */ | ||
378 | peer_ctx = get_peer_ctx (peer); | ||
379 | /* If we have no channel to this peer we don't know whether it's online */ | ||
380 | if ( (NULL == peer_ctx->send_channel) && | ||
381 | (NULL == peer_ctx->recv_channel) ) | ||
382 | { | ||
383 | Peers_unset_peer_flag (peer, Peers_ONLINE); | ||
384 | return GNUNET_NO; | ||
385 | } | ||
386 | /* Otherwise (if we have a channel, we know that it's online */ | ||
387 | Peers_set_peer_flag (peer, Peers_ONLINE); | ||
388 | return GNUNET_YES; | ||
389 | } | ||
390 | |||
391 | |||
392 | /** | ||
393 | * @brief The closure to #get_rand_peer_iterator. | ||
394 | */ | ||
395 | struct GetRandPeerIteratorCls | ||
396 | { | ||
397 | /** | ||
398 | * @brief The index of the peer to return. | ||
399 | * Will be decreased until 0. | ||
400 | * Then current peer is returned. | ||
401 | */ | ||
402 | uint32_t index; | ||
403 | |||
404 | /** | ||
405 | * @brief Pointer to peer to return. | ||
406 | */ | ||
407 | const struct GNUNET_PeerIdentity *peer; | ||
408 | }; | ||
409 | |||
410 | |||
411 | /** | ||
412 | * @brief Iterator function for #get_random_peer_from_peermap. | ||
413 | * | ||
414 | * Implements #GNUNET_CONTAINER_PeerMapIterator. | ||
415 | * Decreases the index until the index is null. | ||
416 | * Then returns the current peer. | ||
417 | * | ||
418 | * @param cls the #GetRandPeerIteratorCls containing index and peer | ||
419 | * @param peer current peer | ||
420 | * @param value unused | ||
421 | * | ||
422 | * @return #GNUNET_YES if we should continue to | ||
423 | * iterate, | ||
424 | * #GNUNET_NO if not. | ||
425 | */ | ||
426 | static int | ||
427 | get_rand_peer_iterator (void *cls, | ||
428 | const struct GNUNET_PeerIdentity *peer, | ||
429 | void *value) | ||
430 | { | ||
431 | struct GetRandPeerIteratorCls *iterator_cls = cls; | ||
432 | if (0 >= iterator_cls->index) | ||
433 | { | ||
434 | iterator_cls->peer = peer; | ||
435 | return GNUNET_NO; | ||
436 | } | ||
437 | iterator_cls->index--; | ||
438 | return GNUNET_YES; | ||
439 | } | ||
440 | |||
441 | |||
442 | /** | ||
443 | * @brief Get a random peer from @a peer_map | ||
444 | * | ||
445 | * @param peer_map the peer_map to get the peer from | ||
446 | * | ||
447 | * @return a random peer | ||
448 | */ | ||
449 | static const struct GNUNET_PeerIdentity * | ||
450 | get_random_peer_from_peermap (const struct | ||
451 | GNUNET_CONTAINER_MultiPeerMap *peer_map) | ||
452 | { | ||
453 | struct GetRandPeerIteratorCls *iterator_cls; | ||
454 | const struct GNUNET_PeerIdentity *ret; | ||
455 | |||
456 | iterator_cls = GNUNET_new (struct GetRandPeerIteratorCls); | ||
457 | iterator_cls->index = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK, | ||
458 | GNUNET_CONTAINER_multipeermap_size (peer_map)); | ||
459 | (void) GNUNET_CONTAINER_multipeermap_iterate (valid_peers, | ||
460 | get_rand_peer_iterator, | ||
461 | iterator_cls); | ||
462 | ret = iterator_cls->peer; | ||
463 | GNUNET_free (iterator_cls); | ||
464 | return ret; | ||
465 | } | ||
466 | |||
467 | |||
468 | /** | ||
469 | * @brief Add a given @a peer to valid peers. | ||
470 | * | ||
471 | * If valid peers are already #num_valid_peers_max, delete a peer previously. | ||
472 | * | ||
473 | * @param peer the peer that is added to the valid peers. | ||
474 | * | ||
475 | * @return #GNUNET_YES if no other peer had to be removed | ||
476 | * #GNUNET_NO otherwise | ||
477 | */ | ||
478 | static int | ||
479 | add_valid_peer (const struct GNUNET_PeerIdentity *peer) | ||
480 | { | ||
481 | const struct GNUNET_PeerIdentity *rand_peer; | ||
482 | int ret; | ||
483 | |||
484 | ret = GNUNET_YES; | ||
485 | while (GNUNET_CONTAINER_multipeermap_size (valid_peers) >= num_valid_peers_max) | ||
486 | { | ||
487 | rand_peer = get_random_peer_from_peermap (valid_peers); | ||
488 | GNUNET_CONTAINER_multipeermap_remove_all (valid_peers, rand_peer); | ||
489 | ret = GNUNET_NO; | ||
490 | } | ||
491 | (void) GNUNET_CONTAINER_multipeermap_put (valid_peers, peer, NULL, | ||
492 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY); | ||
493 | return ret; | ||
494 | } | ||
495 | |||
496 | |||
497 | /** | ||
498 | * @brief Set the peer flag to living and | ||
499 | * call the pending operations on this peer. | ||
500 | * | ||
501 | * Also adds peer to #valid_peers. | ||
502 | * | ||
503 | * @param peer_ctx the #PeerContext of the peer to set live | ||
504 | */ | ||
505 | static void | ||
506 | set_peer_live (struct PeerContext *peer_ctx) | ||
507 | { | ||
508 | struct GNUNET_PeerIdentity *peer; | ||
509 | unsigned int i; | ||
510 | |||
511 | peer = &peer_ctx->peer_id; | ||
512 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
513 | "Peer %s is live and valid, calling %i pending operations on it\n", | ||
514 | GNUNET_i2s (peer), | ||
515 | peer_ctx->num_pending_ops); | ||
516 | |||
517 | if (NULL != peer_ctx->liveliness_check_pending) | ||
518 | { | ||
519 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
520 | "Removing pending liveliness check for peer %s\n", | ||
521 | GNUNET_i2s (&peer_ctx->peer_id)); | ||
522 | // TODO wait until cadet sets mq->cancel_impl | ||
523 | //GNUNET_MQ_send_cancel (peer_ctx->liveliness_check_pending->ev); | ||
524 | GNUNET_free (peer_ctx->liveliness_check_pending); | ||
525 | peer_ctx->liveliness_check_pending = NULL; | ||
526 | } | ||
527 | |||
528 | (void) add_valid_peer (peer); | ||
529 | set_peer_flag (peer_ctx, Peers_ONLINE); | ||
530 | |||
531 | /* Call pending operations */ | ||
532 | for (i = 0; i < peer_ctx->num_pending_ops; i++) | ||
533 | { | ||
534 | peer_ctx->pending_ops[i].op (peer_ctx->pending_ops[i].op_cls, peer); | ||
535 | } | ||
536 | GNUNET_array_grow (peer_ctx->pending_ops, peer_ctx->num_pending_ops, 0); | ||
537 | } | ||
538 | |||
539 | static void | ||
540 | cleanup_destroyed_channel (void *cls, | ||
541 | const struct GNUNET_CADET_Channel *channel); | ||
542 | |||
543 | /* Declaration of handlers */ | ||
544 | static void | ||
545 | handle_peer_check (void *cls, | ||
546 | const struct GNUNET_MessageHeader *msg); | ||
547 | |||
548 | static void | ||
549 | handle_peer_push (void *cls, | ||
550 | const struct GNUNET_MessageHeader *msg); | ||
551 | |||
552 | static void | ||
553 | handle_peer_pull_request (void *cls, | ||
554 | const struct GNUNET_MessageHeader *msg); | ||
555 | |||
556 | static int | ||
557 | check_peer_pull_reply (void *cls, | ||
558 | const struct GNUNET_RPS_P2P_PullReplyMessage *msg); | ||
559 | |||
560 | static void | ||
561 | handle_peer_pull_reply (void *cls, | ||
562 | const struct GNUNET_RPS_P2P_PullReplyMessage *msg); | ||
563 | |||
564 | /* End declaration of handlers */ | ||
565 | |||
566 | |||
567 | /** | ||
568 | * @brief Get the channel of a peer. If not existing, create. | ||
569 | * | ||
570 | * @param peer the peer id | ||
571 | * @return the #GNUNET_CADET_Channel used to send data to @a peer | ||
572 | */ | ||
573 | struct GNUNET_CADET_Channel * | ||
574 | get_channel (const struct GNUNET_PeerIdentity *peer) | ||
575 | { | ||
576 | struct PeerContext *peer_ctx; | ||
577 | struct GNUNET_HashCode port; | ||
578 | /* There exists a copy-paste-clone in run() */ | ||
579 | struct GNUNET_MQ_MessageHandler cadet_handlers[] = { | ||
580 | GNUNET_MQ_hd_fixed_size (peer_check, | ||
581 | GNUNET_MESSAGE_TYPE_RPS_PP_CHECK_LIVE, | ||
582 | struct GNUNET_MessageHeader, | ||
583 | NULL), | ||
584 | GNUNET_MQ_hd_fixed_size (peer_push, | ||
585 | GNUNET_MESSAGE_TYPE_RPS_PP_PUSH, | ||
586 | struct GNUNET_MessageHeader, | ||
587 | NULL), | ||
588 | GNUNET_MQ_hd_fixed_size (peer_pull_request, | ||
589 | GNUNET_MESSAGE_TYPE_RPS_PP_PULL_REQUEST, | ||
590 | struct GNUNET_MessageHeader, | ||
591 | NULL), | ||
592 | GNUNET_MQ_hd_var_size (peer_pull_reply, | ||
593 | GNUNET_MESSAGE_TYPE_RPS_PP_PULL_REPLY, | ||
594 | struct GNUNET_RPS_P2P_PullReplyMessage, | ||
595 | NULL), | ||
596 | GNUNET_MQ_handler_end () | ||
597 | }; | ||
598 | |||
599 | |||
600 | peer_ctx = get_peer_ctx (peer); | ||
601 | if (NULL == peer_ctx->send_channel) | ||
602 | { | ||
603 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
604 | "Trying to establish channel to peer %s\n", | ||
605 | GNUNET_i2s (peer)); | ||
606 | GNUNET_CRYPTO_hash (GNUNET_APPLICATION_PORT_RPS, | ||
607 | strlen (GNUNET_APPLICATION_PORT_RPS), | ||
608 | &port); | ||
609 | peer_ctx->send_channel = | ||
610 | GNUNET_CADET_channel_create (cadet_handle, | ||
611 | (struct GNUNET_PeerIdentity *) peer, /* context */ | ||
612 | peer, | ||
613 | &port, | ||
614 | GNUNET_CADET_OPTION_RELIABLE, | ||
615 | NULL, /* WindowSize handler */ | ||
616 | cleanup_destroyed_channel, /* Disconnect handler */ | ||
617 | cadet_handlers); | ||
618 | } | ||
619 | GNUNET_assert (NULL != peer_ctx->send_channel); | ||
620 | return peer_ctx->send_channel; | ||
621 | } | ||
622 | |||
623 | |||
624 | /** | ||
625 | * Get the message queue (#GNUNET_MQ_Handle) of a specific peer. | ||
626 | * | ||
627 | * If we already have a message queue open to this client, | ||
628 | * simply return it, otherways create one. | ||
629 | * | ||
630 | * @param peer the peer to get the mq to | ||
631 | * @return the #GNUNET_MQ_Handle | ||
632 | */ | ||
633 | static struct GNUNET_MQ_Handle * | ||
634 | get_mq (const struct GNUNET_PeerIdentity *peer) | ||
635 | { | ||
636 | struct PeerContext *peer_ctx; | ||
637 | |||
638 | peer_ctx = get_peer_ctx (peer); | ||
639 | |||
640 | if (NULL == peer_ctx->mq) | ||
641 | { | ||
642 | (void) get_channel (peer); | ||
643 | peer_ctx->mq = GNUNET_CADET_get_mq (peer_ctx->send_channel); | ||
644 | } | ||
645 | return peer_ctx->mq; | ||
646 | } | ||
647 | |||
648 | |||
649 | /** | ||
650 | * @brief This is called in response to the first message we sent as a | ||
651 | * liveliness check. | ||
652 | * | ||
653 | * @param cls #PeerContext of peer with pending liveliness check | ||
654 | */ | ||
655 | static void | ||
656 | mq_liveliness_check_successful (void *cls) | ||
657 | { | ||
658 | struct PeerContext *peer_ctx = cls; | ||
659 | |||
660 | if (NULL != peer_ctx->liveliness_check_pending) | ||
661 | { | ||
662 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
663 | "Liveliness check for peer %s was successfull\n", | ||
664 | GNUNET_i2s (&peer_ctx->peer_id)); | ||
665 | GNUNET_free (peer_ctx->liveliness_check_pending); | ||
666 | peer_ctx->liveliness_check_pending = NULL; | ||
667 | set_peer_live (peer_ctx); | ||
668 | } | ||
669 | } | ||
670 | |||
671 | /** | ||
672 | * Issue a check whether peer is live | ||
673 | * | ||
674 | * @param peer_ctx the context of the peer | ||
675 | */ | ||
676 | static void | ||
677 | check_peer_live (struct PeerContext *peer_ctx) | ||
678 | { | ||
679 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
680 | "Get informed about peer %s getting live\n", | ||
681 | GNUNET_i2s (&peer_ctx->peer_id)); | ||
682 | |||
683 | struct GNUNET_MQ_Handle *mq; | ||
684 | struct GNUNET_MQ_Envelope *ev; | ||
685 | |||
686 | ev = GNUNET_MQ_msg_header (GNUNET_MESSAGE_TYPE_RPS_PP_CHECK_LIVE); | ||
687 | peer_ctx->liveliness_check_pending = GNUNET_new (struct PendingMessage); | ||
688 | peer_ctx->liveliness_check_pending->ev = ev; | ||
689 | peer_ctx->liveliness_check_pending->peer_ctx = peer_ctx; | ||
690 | peer_ctx->liveliness_check_pending->type = "Check liveliness"; | ||
691 | mq = get_mq (&peer_ctx->peer_id); | ||
692 | GNUNET_MQ_notify_sent (ev, | ||
693 | mq_liveliness_check_successful, | ||
694 | peer_ctx); | ||
695 | GNUNET_MQ_send (mq, ev); | ||
696 | } | ||
697 | |||
698 | /** | ||
699 | * @brief Add an envelope to a message passed to mq to list of pending messages | ||
700 | * | ||
701 | * @param peer peer the message was sent to | ||
702 | * @param ev envelope to the message | ||
703 | * @param type type of the message to be sent | ||
704 | * @return pointer to pending message | ||
705 | */ | ||
706 | static struct PendingMessage * | ||
707 | insert_pending_message (const struct GNUNET_PeerIdentity *peer, | ||
708 | struct GNUNET_MQ_Envelope *ev, | ||
709 | const char *type) | ||
710 | { | ||
711 | struct PendingMessage *pending_msg; | ||
712 | struct PeerContext *peer_ctx; | ||
713 | |||
714 | peer_ctx = get_peer_ctx (peer); | ||
715 | pending_msg = GNUNET_new (struct PendingMessage); | ||
716 | pending_msg->ev = ev; | ||
717 | pending_msg->peer_ctx = peer_ctx; | ||
718 | pending_msg->type = type; | ||
719 | GNUNET_CONTAINER_DLL_insert (peer_ctx->pending_messages_head, | ||
720 | peer_ctx->pending_messages_tail, | ||
721 | pending_msg); | ||
722 | return pending_msg; | ||
723 | } | ||
724 | |||
725 | |||
726 | /** | ||
727 | * @brief Remove a pending message from the respective DLL | ||
728 | * | ||
729 | * @param pending_msg the pending message to remove | ||
730 | * @param cancel cancel the pending message, too | ||
731 | */ | ||
732 | static void | ||
733 | remove_pending_message (struct PendingMessage *pending_msg, int cancel) | ||
734 | { | ||
735 | struct PeerContext *peer_ctx; | ||
736 | |||
737 | peer_ctx = pending_msg->peer_ctx; | ||
738 | GNUNET_assert (NULL != peer_ctx); | ||
739 | GNUNET_CONTAINER_DLL_remove (peer_ctx->pending_messages_head, | ||
740 | peer_ctx->pending_messages_tail, | ||
741 | pending_msg); | ||
742 | // TODO wait for the cadet implementation of message cancellation | ||
743 | //if (GNUNET_YES == cancel) | ||
744 | //{ | ||
745 | // GNUNET_MQ_send_cancel (pending_msg->ev); | ||
746 | //} | ||
747 | GNUNET_free (pending_msg); | ||
748 | } | ||
749 | |||
750 | |||
751 | /** | ||
752 | * @brief Check whether function of type #PeerOp was already scheduled | ||
753 | * | ||
754 | * The array with pending operations will probably never grow really big, so | ||
755 | * iterating over it should be ok. | ||
756 | * | ||
757 | * @param peer the peer to check | ||
758 | * @param peer_op the operation (#PeerOp) on the peer | ||
759 | * | ||
760 | * @return #GNUNET_YES if this operation is scheduled on that peer | ||
761 | * #GNUNET_NO otherwise | ||
762 | */ | ||
763 | static int | ||
764 | check_operation_scheduled (const struct GNUNET_PeerIdentity *peer, | ||
765 | const PeerOp peer_op) | ||
766 | { | ||
767 | const struct PeerContext *peer_ctx; | ||
768 | unsigned int i; | ||
769 | |||
770 | peer_ctx = get_peer_ctx (peer); | ||
771 | for (i = 0; i < peer_ctx->num_pending_ops; i++) | ||
772 | if (peer_op == peer_ctx->pending_ops[i].op) | ||
773 | return GNUNET_YES; | ||
774 | return GNUNET_NO; | ||
775 | } | ||
776 | |||
777 | int | ||
778 | Peers_remove_peer (const struct GNUNET_PeerIdentity *peer); | ||
779 | |||
780 | /** | ||
781 | * Iterator over hash map entries. Deletes all contexts of peers. | ||
782 | * | ||
783 | * @param cls closure | ||
784 | * @param key current public key | ||
785 | * @param value value in the hash map | ||
786 | * @return #GNUNET_YES if we should continue to iterate, | ||
787 | * #GNUNET_NO if not. | ||
788 | */ | ||
789 | static int | ||
790 | peermap_clear_iterator (void *cls, | ||
791 | const struct GNUNET_PeerIdentity *key, | ||
792 | void *value) | ||
793 | { | ||
794 | Peers_remove_peer (key); | ||
795 | return GNUNET_YES; | ||
796 | } | ||
797 | |||
798 | |||
799 | /** | ||
800 | * @brief This is called once a message is sent. | ||
801 | * | ||
802 | * Removes the pending message | ||
803 | * | ||
804 | * @param cls type of the message that was sent | ||
805 | */ | ||
806 | static void | ||
807 | mq_notify_sent_cb (void *cls) | ||
808 | { | ||
809 | struct PendingMessage *pending_msg = (struct PendingMessage *) cls; | ||
810 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
811 | "%s was sent.\n", | ||
812 | pending_msg->type); | ||
813 | /* Do not cancle message */ | ||
814 | remove_pending_message (pending_msg, GNUNET_NO); | ||
815 | } | ||
816 | |||
817 | |||
818 | /** | ||
819 | * @brief Iterator function for #store_valid_peers. | ||
820 | * | ||
821 | * Implements #GNUNET_CONTAINER_PeerMapIterator. | ||
822 | * Writes single peer to disk. | ||
823 | * | ||
824 | * @param cls the file handle to write to. | ||
825 | * @param peer current peer | ||
826 | * @param value unused | ||
827 | * | ||
828 | * @return #GNUNET_YES if we should continue to | ||
829 | * iterate, | ||
830 | * #GNUNET_NO if not. | ||
831 | */ | ||
832 | static int | ||
833 | store_peer_presistently_iterator (void *cls, | ||
834 | const struct GNUNET_PeerIdentity *peer, | ||
835 | void *value) | ||
836 | { | ||
837 | const struct GNUNET_DISK_FileHandle *fh = cls; | ||
838 | char peer_string[128]; | ||
839 | int size; | ||
840 | ssize_t ret; | ||
841 | |||
842 | if (NULL == peer) | ||
843 | { | ||
844 | return GNUNET_YES; | ||
845 | } | ||
846 | size = GNUNET_snprintf (peer_string, | ||
847 | sizeof (peer_string), | ||
848 | "%s\n", | ||
849 | GNUNET_i2s_full (peer)); | ||
850 | GNUNET_assert (53 == size); | ||
851 | ret = GNUNET_DISK_file_write (fh, | ||
852 | peer_string, | ||
853 | size); | ||
854 | GNUNET_assert (size == ret); | ||
855 | return GNUNET_YES; | ||
856 | } | ||
857 | |||
858 | |||
859 | /** | ||
860 | * @brief Store the peers currently in #valid_peers to disk. | ||
861 | */ | ||
862 | static void | ||
863 | store_valid_peers () | ||
864 | { | ||
865 | struct GNUNET_DISK_FileHandle *fh; | ||
866 | uint32_t number_written_peers; | ||
867 | int ret; | ||
868 | |||
869 | if (0 == strncmp ("DISABLE", filename_valid_peers, 7)) | ||
870 | { | ||
871 | return; | ||
872 | } | ||
873 | |||
874 | ret = GNUNET_DISK_directory_create_for_file (filename_valid_peers); | ||
875 | if (GNUNET_SYSERR == ret) | ||
876 | { | ||
877 | LOG (GNUNET_ERROR_TYPE_WARNING, | ||
878 | "Not able to create directory for file `%s'\n", | ||
879 | filename_valid_peers); | ||
880 | GNUNET_break (0); | ||
881 | } | ||
882 | else if (GNUNET_NO == ret) | ||
883 | { | ||
884 | LOG (GNUNET_ERROR_TYPE_WARNING, | ||
885 | "Directory for file `%s' exists but is not writable for us\n", | ||
886 | filename_valid_peers); | ||
887 | GNUNET_break (0); | ||
888 | } | ||
889 | fh = GNUNET_DISK_file_open (filename_valid_peers, | ||
890 | GNUNET_DISK_OPEN_WRITE | | ||
891 | GNUNET_DISK_OPEN_CREATE, | ||
892 | GNUNET_DISK_PERM_USER_READ | | ||
893 | GNUNET_DISK_PERM_USER_WRITE); | ||
894 | if (NULL == fh) | ||
895 | { | ||
896 | LOG (GNUNET_ERROR_TYPE_WARNING, | ||
897 | "Not able to write valid peers to file `%s'\n", | ||
898 | filename_valid_peers); | ||
899 | return; | ||
900 | } | ||
901 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
902 | "Writing %u valid peers to disk\n", | ||
903 | GNUNET_CONTAINER_multipeermap_size (valid_peers)); | ||
904 | number_written_peers = | ||
905 | GNUNET_CONTAINER_multipeermap_iterate (valid_peers, | ||
906 | store_peer_presistently_iterator, | ||
907 | fh); | ||
908 | GNUNET_assert (GNUNET_OK == GNUNET_DISK_file_close (fh)); | ||
909 | GNUNET_assert (number_written_peers == | ||
910 | GNUNET_CONTAINER_multipeermap_size (valid_peers)); | ||
911 | } | ||
912 | |||
913 | |||
914 | /** | ||
915 | * @brief Convert string representation of peer id to peer id. | ||
916 | * | ||
917 | * Counterpart to #GNUNET_i2s_full. | ||
918 | * | ||
919 | * @param string_repr The string representation of the peer id | ||
920 | * | ||
921 | * @return The peer id | ||
922 | */ | ||
923 | static const struct GNUNET_PeerIdentity * | ||
924 | s2i_full (const char *string_repr) | ||
925 | { | ||
926 | struct GNUNET_PeerIdentity *peer; | ||
927 | size_t len; | ||
928 | int ret; | ||
929 | |||
930 | peer = GNUNET_new (struct GNUNET_PeerIdentity); | ||
931 | len = strlen (string_repr); | ||
932 | if (52 > len) | ||
933 | { | ||
934 | LOG (GNUNET_ERROR_TYPE_WARNING, | ||
935 | "Not able to convert string representation of PeerID to PeerID\n" | ||
936 | "Sting representation: %s (len %lu) - too short\n", | ||
937 | string_repr, | ||
938 | len); | ||
939 | GNUNET_break (0); | ||
940 | } | ||
941 | else if (52 < len) | ||
942 | { | ||
943 | len = 52; | ||
944 | } | ||
945 | ret = GNUNET_CRYPTO_eddsa_public_key_from_string (string_repr, | ||
946 | len, | ||
947 | &peer->public_key); | ||
948 | if (GNUNET_OK != ret) | ||
949 | { | ||
950 | LOG (GNUNET_ERROR_TYPE_WARNING, | ||
951 | "Not able to convert string representation of PeerID to PeerID\n" | ||
952 | "Sting representation: %s\n", | ||
953 | string_repr); | ||
954 | GNUNET_break (0); | ||
955 | } | ||
956 | return peer; | ||
957 | } | ||
958 | |||
959 | |||
960 | /** | ||
961 | * @brief Restore the peers on disk to #valid_peers. | ||
962 | */ | ||
963 | static void | ||
964 | restore_valid_peers () | ||
965 | { | ||
966 | off_t file_size; | ||
967 | uint32_t num_peers; | ||
968 | struct GNUNET_DISK_FileHandle *fh; | ||
969 | char *buf; | ||
970 | ssize_t size_read; | ||
971 | char *iter_buf; | ||
972 | char *str_repr; | ||
973 | const struct GNUNET_PeerIdentity *peer; | ||
974 | |||
975 | if (0 == strncmp ("DISABLE", filename_valid_peers, 7)) | ||
976 | { | ||
977 | return; | ||
978 | } | ||
979 | |||
980 | if (GNUNET_OK != GNUNET_DISK_file_test (filename_valid_peers)) | ||
981 | { | ||
982 | return; | ||
983 | } | ||
984 | fh = GNUNET_DISK_file_open (filename_valid_peers, | ||
985 | GNUNET_DISK_OPEN_READ, | ||
986 | GNUNET_DISK_PERM_NONE); | ||
987 | GNUNET_assert (NULL != fh); | ||
988 | GNUNET_assert (GNUNET_OK == GNUNET_DISK_file_handle_size (fh, &file_size)); | ||
989 | num_peers = file_size / 53; | ||
990 | buf = GNUNET_malloc (file_size); | ||
991 | size_read = GNUNET_DISK_file_read (fh, buf, file_size); | ||
992 | GNUNET_assert (size_read == file_size); | ||
993 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
994 | "Restoring %" PRIu32 " peers from file `%s'\n", | ||
995 | num_peers, | ||
996 | filename_valid_peers); | ||
997 | for (iter_buf = buf; iter_buf < buf + file_size - 1; iter_buf += 53) | ||
998 | { | ||
999 | str_repr = GNUNET_strndup (iter_buf, 53); | ||
1000 | peer = s2i_full (str_repr); | ||
1001 | GNUNET_free (str_repr); | ||
1002 | add_valid_peer (peer); | ||
1003 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
1004 | "Restored valid peer %s from disk\n", | ||
1005 | GNUNET_i2s_full (peer)); | ||
1006 | } | ||
1007 | iter_buf = NULL; | ||
1008 | GNUNET_free (buf); | ||
1009 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
1010 | "num_peers: %" PRIu32 ", _size (valid_peers): %u\n", | ||
1011 | num_peers, | ||
1012 | GNUNET_CONTAINER_multipeermap_size (valid_peers)); | ||
1013 | if (num_peers != GNUNET_CONTAINER_multipeermap_size (valid_peers)) | ||
1014 | { | ||
1015 | LOG (GNUNET_ERROR_TYPE_WARNING, | ||
1016 | "Number of restored peers does not match file size. Have probably duplicates.\n"); | ||
1017 | } | ||
1018 | GNUNET_assert (GNUNET_OK == GNUNET_DISK_file_close (fh)); | ||
1019 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
1020 | "Restored %u valid peers from disk\n", | ||
1021 | GNUNET_CONTAINER_multipeermap_size (valid_peers)); | ||
1022 | } | ||
1023 | |||
1024 | |||
1025 | /** | ||
1026 | * @brief Initialise storage of peers | ||
1027 | * | ||
1028 | * @param fn_valid_peers filename of the file used to store valid peer ids | ||
1029 | * @param cadet_h cadet handle | ||
1030 | * @param disconnect_handler Disconnect handler | ||
1031 | * @param own_id own peer identity | ||
1032 | */ | ||
1033 | void | ||
1034 | Peers_initialise (char* fn_valid_peers, | ||
1035 | struct GNUNET_CADET_Handle *cadet_h, | ||
1036 | GNUNET_CADET_DisconnectEventHandler disconnect_handler, | ||
1037 | const struct GNUNET_PeerIdentity *own_id) | ||
1038 | { | ||
1039 | filename_valid_peers = GNUNET_strdup (fn_valid_peers); | ||
1040 | cadet_handle = cadet_h; | ||
1041 | own_identity = *own_id; | ||
1042 | peer_map = GNUNET_CONTAINER_multipeermap_create (4, GNUNET_NO); | ||
1043 | valid_peers = GNUNET_CONTAINER_multipeermap_create (4, GNUNET_NO); | ||
1044 | restore_valid_peers (); | ||
1045 | } | ||
1046 | |||
1047 | |||
1048 | /** | ||
1049 | * @brief Delete storage of peers that was created with #Peers_initialise () | ||
1050 | */ | ||
1051 | void | ||
1052 | Peers_terminate () | ||
1053 | { | ||
1054 | if (GNUNET_SYSERR == | ||
1055 | GNUNET_CONTAINER_multipeermap_iterate (peer_map, | ||
1056 | peermap_clear_iterator, | ||
1057 | NULL)) | ||
1058 | { | ||
1059 | LOG (GNUNET_ERROR_TYPE_WARNING, | ||
1060 | "Iteration destroying peers was aborted.\n"); | ||
1061 | } | ||
1062 | GNUNET_CONTAINER_multipeermap_destroy (peer_map); | ||
1063 | store_valid_peers (); | ||
1064 | GNUNET_free (filename_valid_peers); | ||
1065 | GNUNET_CONTAINER_multipeermap_destroy (valid_peers); | ||
1066 | } | ||
1067 | |||
1068 | |||
1069 | /** | ||
1070 | * Iterator over #valid_peers hash map entries. | ||
1071 | * | ||
1072 | * @param cls closure - unused | ||
1073 | * @param peer current peer id | ||
1074 | * @param value value in the hash map - unused | ||
1075 | * @return #GNUNET_YES if we should continue to | ||
1076 | * iterate, | ||
1077 | * #GNUNET_NO if not. | ||
1078 | */ | ||
1079 | static int | ||
1080 | valid_peer_iterator (void *cls, | ||
1081 | const struct GNUNET_PeerIdentity *peer, | ||
1082 | void *value) | ||
1083 | { | ||
1084 | struct PeersIteratorCls *it_cls = cls; | ||
1085 | |||
1086 | return it_cls->iterator (it_cls->cls, | ||
1087 | peer); | ||
1088 | } | ||
1089 | |||
1090 | |||
1091 | /** | ||
1092 | * @brief Get all currently known, valid peer ids. | ||
1093 | * | ||
1094 | * @param it function to call on each peer id | ||
1095 | * @param it_cls extra argument to @a it | ||
1096 | * @return the number of key value pairs processed, | ||
1097 | * #GNUNET_SYSERR if it aborted iteration | ||
1098 | */ | ||
1099 | int | ||
1100 | Peers_get_valid_peers (PeersIterator iterator, | ||
1101 | void *it_cls) | ||
1102 | { | ||
1103 | struct PeersIteratorCls *cls; | ||
1104 | int ret; | ||
1105 | |||
1106 | cls = GNUNET_new (struct PeersIteratorCls); | ||
1107 | cls->iterator = iterator; | ||
1108 | cls->cls = it_cls; | ||
1109 | ret = GNUNET_CONTAINER_multipeermap_iterate (valid_peers, | ||
1110 | valid_peer_iterator, | ||
1111 | cls); | ||
1112 | GNUNET_free (cls); | ||
1113 | return ret; | ||
1114 | } | ||
1115 | |||
1116 | |||
1117 | /** | ||
1118 | * @brief Add peer to known peers. | ||
1119 | * | ||
1120 | * This function is called on new peer_ids from 'external' sources | ||
1121 | * (client seed, cadet get_peers(), ...) | ||
1122 | * | ||
1123 | * @param peer the new #GNUNET_PeerIdentity | ||
1124 | * | ||
1125 | * @return #GNUNET_YES if peer was inserted | ||
1126 | * #GNUNET_NO otherwise (if peer was already known or | ||
1127 | * peer was #own_identity) | ||
1128 | */ | ||
1129 | int | ||
1130 | Peers_insert_peer (const struct GNUNET_PeerIdentity *peer) | ||
1131 | { | ||
1132 | if ( (GNUNET_YES == Peers_check_peer_known (peer)) || | ||
1133 | (0 == GNUNET_CRYPTO_cmp_peer_identity (peer, &own_identity)) ) | ||
1134 | { | ||
1135 | return GNUNET_NO; /* We already know this peer - nothing to do */ | ||
1136 | } | ||
1137 | (void) create_peer_ctx (peer); | ||
1138 | return GNUNET_YES; | ||
1139 | } | ||
1140 | |||
1141 | int | ||
1142 | Peers_check_peer_flag (const struct GNUNET_PeerIdentity *peer, enum Peers_PeerFlags flags); | ||
1143 | |||
1144 | /** | ||
1145 | * @brief Try connecting to a peer to see whether it is online | ||
1146 | * | ||
1147 | * If not known yet, insert into known peers | ||
1148 | * | ||
1149 | * @param peer the peer whose liveliness is to be checked | ||
1150 | * @return #GNUNET_YES if peer had to be inserted | ||
1151 | * #GNUNET_NO otherwise (if peer was already known or | ||
1152 | * peer was #own_identity) | ||
1153 | */ | ||
1154 | int | ||
1155 | Peers_issue_peer_liveliness_check (const struct GNUNET_PeerIdentity *peer) | ||
1156 | { | ||
1157 | struct PeerContext *peer_ctx; | ||
1158 | int ret; | ||
1159 | |||
1160 | if (0 == GNUNET_CRYPTO_cmp_peer_identity (peer, &own_identity)) | ||
1161 | { | ||
1162 | return GNUNET_NO; | ||
1163 | } | ||
1164 | ret = Peers_insert_peer (peer); | ||
1165 | peer_ctx = get_peer_ctx (peer); | ||
1166 | if (GNUNET_NO == Peers_check_peer_flag (peer, Peers_ONLINE)) | ||
1167 | { | ||
1168 | check_peer_live (peer_ctx); | ||
1169 | } | ||
1170 | return ret; | ||
1171 | } | ||
1172 | |||
1173 | |||
1174 | /** | ||
1175 | * @brief Check if peer is removable. | ||
1176 | * | ||
1177 | * Check if | ||
1178 | * - a recv channel exists | ||
1179 | * - there are pending messages | ||
1180 | * - there is no pending pull reply | ||
1181 | * | ||
1182 | * @param peer the peer in question | ||
1183 | * @return #GNUNET_YES if peer is removable | ||
1184 | * #GNUNET_NO if peer is NOT removable | ||
1185 | * #GNUNET_SYSERR if peer is not known | ||
1186 | */ | ||
1187 | int | ||
1188 | Peers_check_removable (const struct GNUNET_PeerIdentity *peer) | ||
1189 | { | ||
1190 | struct PeerContext *peer_ctx; | ||
1191 | |||
1192 | if (GNUNET_NO == GNUNET_CONTAINER_multipeermap_contains (peer_map, peer)) | ||
1193 | { | ||
1194 | return GNUNET_SYSERR; | ||
1195 | } | ||
1196 | |||
1197 | peer_ctx = get_peer_ctx (peer); | ||
1198 | if ( (NULL != peer_ctx->recv_channel) || | ||
1199 | (NULL != peer_ctx->pending_messages_head) || | ||
1200 | (GNUNET_NO == check_peer_flag_set (peer_ctx, Peers_PULL_REPLY_PENDING)) ) | ||
1201 | { | ||
1202 | return GNUNET_NO; | ||
1203 | } | ||
1204 | return GNUNET_YES; | ||
1205 | } | ||
1206 | |||
1207 | uint32_t * | ||
1208 | Peers_get_channel_flag (const struct GNUNET_PeerIdentity *peer, | ||
1209 | enum Peers_ChannelRole role); | ||
1210 | |||
1211 | int | ||
1212 | Peers_check_channel_flag (uint32_t *channel_flags, enum Peers_ChannelFlags flags); | ||
1213 | |||
1214 | /** | ||
1215 | * @brief Remove peer | ||
1216 | * | ||
1217 | * @param peer the peer to clean | ||
1218 | * @return #GNUNET_YES if peer was removed | ||
1219 | * #GNUNET_NO otherwise | ||
1220 | */ | ||
1221 | int | ||
1222 | Peers_remove_peer (const struct GNUNET_PeerIdentity *peer) | ||
1223 | { | ||
1224 | struct PeerContext *peer_ctx; | ||
1225 | uint32_t *channel_flag; | ||
1226 | |||
1227 | if (GNUNET_NO == GNUNET_CONTAINER_multipeermap_contains (peer_map, peer)) | ||
1228 | { | ||
1229 | return GNUNET_NO; | ||
1230 | } | ||
1231 | |||
1232 | peer_ctx = get_peer_ctx (peer); | ||
1233 | set_peer_flag (peer_ctx, Peers_TO_DESTROY); | ||
1234 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
1235 | "Going to remove peer %s\n", | ||
1236 | GNUNET_i2s (&peer_ctx->peer_id)); | ||
1237 | Peers_unset_peer_flag (peer, Peers_ONLINE); | ||
1238 | |||
1239 | GNUNET_array_grow (peer_ctx->pending_ops, peer_ctx->num_pending_ops, 0); | ||
1240 | while (NULL != peer_ctx->pending_messages_head) | ||
1241 | { | ||
1242 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
1243 | "Removing unsent %s\n", | ||
1244 | peer_ctx->pending_messages_head->type); | ||
1245 | /* Cancle pending message, too */ | ||
1246 | remove_pending_message (peer_ctx->pending_messages_head, GNUNET_YES); | ||
1247 | } | ||
1248 | /* If we are still waiting for notification whether this peer is live | ||
1249 | * cancel the according task */ | ||
1250 | if (NULL != peer_ctx->liveliness_check_pending) | ||
1251 | { | ||
1252 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1253 | "Removing pending liveliness check for peer %s\n", | ||
1254 | GNUNET_i2s (&peer_ctx->peer_id)); | ||
1255 | // TODO wait until cadet sets mq->cancel_impl | ||
1256 | //GNUNET_MQ_send_cancel (peer_ctx->liveliness_check_pending->ev); | ||
1257 | GNUNET_free (peer_ctx->liveliness_check_pending); | ||
1258 | peer_ctx->liveliness_check_pending = NULL; | ||
1259 | } | ||
1260 | channel_flag = Peers_get_channel_flag (peer, Peers_CHANNEL_ROLE_SENDING); | ||
1261 | if (NULL != peer_ctx->send_channel && | ||
1262 | GNUNET_YES != Peers_check_channel_flag (channel_flag, Peers_CHANNEL_DESTROING)) | ||
1263 | { | ||
1264 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
1265 | "Destroying send channel\n"); | ||
1266 | GNUNET_CADET_channel_destroy (peer_ctx->send_channel); | ||
1267 | peer_ctx->send_channel = NULL; | ||
1268 | } | ||
1269 | channel_flag = Peers_get_channel_flag (peer, Peers_CHANNEL_ROLE_RECEIVING); | ||
1270 | if (NULL != peer_ctx->recv_channel && | ||
1271 | GNUNET_YES != Peers_check_channel_flag (channel_flag, Peers_CHANNEL_DESTROING)) | ||
1272 | { | ||
1273 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
1274 | "Destroying recv channel\n"); | ||
1275 | GNUNET_CADET_channel_destroy (peer_ctx->recv_channel); | ||
1276 | peer_ctx->recv_channel = NULL; | ||
1277 | } | ||
1278 | |||
1279 | GNUNET_free (peer_ctx->send_channel_flags); | ||
1280 | GNUNET_free (peer_ctx->recv_channel_flags); | ||
1281 | |||
1282 | if (GNUNET_YES != GNUNET_CONTAINER_multipeermap_remove_all (peer_map, &peer_ctx->peer_id)) | ||
1283 | { | ||
1284 | LOG (GNUNET_ERROR_TYPE_WARNING, "removing peer from peer_map failed\n"); | ||
1285 | } | ||
1286 | GNUNET_free (peer_ctx); | ||
1287 | return GNUNET_YES; | ||
1288 | } | ||
1289 | |||
1290 | |||
1291 | /** | ||
1292 | * @brief set flags on a given peer. | ||
1293 | * | ||
1294 | * @param peer the peer to set flags on | ||
1295 | * @param flags the flags | ||
1296 | */ | ||
1297 | void | ||
1298 | Peers_set_peer_flag (const struct GNUNET_PeerIdentity *peer, enum Peers_PeerFlags flags) | ||
1299 | { | ||
1300 | struct PeerContext *peer_ctx; | ||
1301 | |||
1302 | peer_ctx = get_peer_ctx (peer); | ||
1303 | set_peer_flag (peer_ctx, flags); | ||
1304 | } | ||
1305 | |||
1306 | |||
1307 | /** | ||
1308 | * @brief unset flags on a given peer. | ||
1309 | * | ||
1310 | * @param peer the peer to unset flags on | ||
1311 | * @param flags the flags | ||
1312 | */ | ||
1313 | void | ||
1314 | Peers_unset_peer_flag (const struct GNUNET_PeerIdentity *peer, enum Peers_PeerFlags flags) | ||
1315 | { | ||
1316 | struct PeerContext *peer_ctx; | ||
1317 | |||
1318 | peer_ctx = get_peer_ctx (peer); | ||
1319 | unset_peer_flag (peer_ctx, flags); | ||
1320 | } | ||
1321 | |||
1322 | |||
1323 | /** | ||
1324 | * @brief Check whether flags on a peer are set. | ||
1325 | * | ||
1326 | * @param peer the peer to check the flag of | ||
1327 | * @param flags the flags to check | ||
1328 | * | ||
1329 | * @return #GNUNET_SYSERR if peer is not known | ||
1330 | * #GNUNET_YES if all given flags are set | ||
1331 | * #GNUNET_NO otherwise | ||
1332 | */ | ||
1333 | int | ||
1334 | Peers_check_peer_flag (const struct GNUNET_PeerIdentity *peer, enum Peers_PeerFlags flags) | ||
1335 | { | ||
1336 | struct PeerContext *peer_ctx; | ||
1337 | |||
1338 | if (GNUNET_NO == Peers_check_peer_known (peer)) | ||
1339 | { | ||
1340 | return GNUNET_SYSERR; | ||
1341 | } | ||
1342 | peer_ctx = get_peer_ctx (peer); | ||
1343 | return check_peer_flag_set (peer_ctx, flags); | ||
1344 | } | ||
1345 | |||
1346 | |||
1347 | /** | ||
1348 | * @brief set flags on a given channel. | ||
1349 | * | ||
1350 | * @param channel the channel to set flags on | ||
1351 | * @param flags the flags | ||
1352 | */ | ||
1353 | void | ||
1354 | Peers_set_channel_flag (uint32_t *channel_flags, enum Peers_ChannelFlags flags) | ||
1355 | { | ||
1356 | set_channel_flag (channel_flags, flags); | ||
1357 | } | ||
1358 | |||
1359 | |||
1360 | /** | ||
1361 | * @brief unset flags on a given channel. | ||
1362 | * | ||
1363 | * @param channel the channel to unset flags on | ||
1364 | * @param flags the flags | ||
1365 | */ | ||
1366 | void | ||
1367 | Peers_unset_channel_flag (uint32_t *channel_flags, enum Peers_ChannelFlags flags) | ||
1368 | { | ||
1369 | unset_channel_flag (channel_flags, flags); | ||
1370 | } | ||
1371 | |||
1372 | |||
1373 | /** | ||
1374 | * @brief Check whether flags on a channel are set. | ||
1375 | * | ||
1376 | * @param channel the channel to check the flag of | ||
1377 | * @param flags the flags to check | ||
1378 | * | ||
1379 | * @return #GNUNET_YES if all given flags are set | ||
1380 | * #GNUNET_NO otherwise | ||
1381 | */ | ||
1382 | int | ||
1383 | Peers_check_channel_flag (uint32_t *channel_flags, enum Peers_ChannelFlags flags) | ||
1384 | { | ||
1385 | return check_channel_flag_set (channel_flags, flags); | ||
1386 | } | ||
1387 | |||
1388 | /** | ||
1389 | * @brief Get the flags for the channel in @a role for @a peer. | ||
1390 | * | ||
1391 | * @param peer Peer to get the channel flags for. | ||
1392 | * @param role Role of channel to get flags for | ||
1393 | * | ||
1394 | * @return The flags. | ||
1395 | */ | ||
1396 | uint32_t * | ||
1397 | Peers_get_channel_flag (const struct GNUNET_PeerIdentity *peer, | ||
1398 | enum Peers_ChannelRole role) | ||
1399 | { | ||
1400 | const struct PeerContext *peer_ctx; | ||
1401 | |||
1402 | peer_ctx = get_peer_ctx (peer); | ||
1403 | if (Peers_CHANNEL_ROLE_SENDING == role) | ||
1404 | { | ||
1405 | return peer_ctx->send_channel_flags; | ||
1406 | } | ||
1407 | else if (Peers_CHANNEL_ROLE_RECEIVING == role) | ||
1408 | { | ||
1409 | return peer_ctx->recv_channel_flags; | ||
1410 | } | ||
1411 | else | ||
1412 | { | ||
1413 | GNUNET_assert (0); | ||
1414 | } | ||
1415 | } | ||
1416 | |||
1417 | /** | ||
1418 | * @brief Check whether we have information about the given peer. | ||
1419 | * | ||
1420 | * FIXME probably deprecated. Make this the new _online. | ||
1421 | * | ||
1422 | * @param peer peer in question | ||
1423 | * | ||
1424 | * @return #GNUNET_YES if peer is known | ||
1425 | * #GNUNET_NO if peer is not knwon | ||
1426 | */ | ||
1427 | int | ||
1428 | Peers_check_peer_known (const struct GNUNET_PeerIdentity *peer) | ||
1429 | { | ||
1430 | return GNUNET_CONTAINER_multipeermap_contains (peer_map, peer); | ||
1431 | } | ||
1432 | |||
1433 | |||
1434 | /** | ||
1435 | * @brief Check whether @a peer is actually a peer. | ||
1436 | * | ||
1437 | * A valid peer is a peer that we know exists eg. we were connected to once. | ||
1438 | * | ||
1439 | * @param peer peer in question | ||
1440 | * | ||
1441 | * @return #GNUNET_YES if peer is valid | ||
1442 | * #GNUNET_NO if peer is not valid | ||
1443 | */ | ||
1444 | int | ||
1445 | Peers_check_peer_valid (const struct GNUNET_PeerIdentity *peer) | ||
1446 | { | ||
1447 | return GNUNET_CONTAINER_multipeermap_contains (valid_peers, peer); | ||
1448 | } | ||
1449 | |||
1450 | |||
1451 | /** | ||
1452 | * @brief Indicate that we want to send to the other peer | ||
1453 | * | ||
1454 | * This establishes a sending channel | ||
1455 | * | ||
1456 | * @param peer the peer to establish channel to | ||
1457 | */ | ||
1458 | void | ||
1459 | Peers_indicate_sending_intention (const struct GNUNET_PeerIdentity *peer) | ||
1460 | { | ||
1461 | GNUNET_assert (GNUNET_YES == Peers_check_peer_known (peer)); | ||
1462 | (void) get_channel (peer); | ||
1463 | } | ||
1464 | |||
1465 | |||
1466 | /** | ||
1467 | * @brief Check whether other peer has the intention to send/opened channel | ||
1468 | * towars us | ||
1469 | * | ||
1470 | * @param peer the peer in question | ||
1471 | * | ||
1472 | * @return #GNUNET_YES if peer has the intention to send | ||
1473 | * #GNUNET_NO otherwise | ||
1474 | */ | ||
1475 | int | ||
1476 | Peers_check_peer_send_intention (const struct GNUNET_PeerIdentity *peer) | ||
1477 | { | ||
1478 | const struct PeerContext *peer_ctx; | ||
1479 | |||
1480 | peer_ctx = get_peer_ctx (peer); | ||
1481 | if (NULL != peer_ctx->recv_channel) | ||
1482 | { | ||
1483 | return GNUNET_YES; | ||
1484 | } | ||
1485 | return GNUNET_NO; | ||
1486 | } | ||
1487 | |||
1488 | |||
1489 | /** | ||
1490 | * Handle the channel a peer opens to us. | ||
1491 | * | ||
1492 | * @param cls The closure | ||
1493 | * @param channel The channel the peer wants to establish | ||
1494 | * @param initiator The peer's peer ID | ||
1495 | * | ||
1496 | * @return initial channel context for the channel | ||
1497 | * (can be NULL -- that's not an error) | ||
1498 | */ | ||
1499 | void * | ||
1500 | Peers_handle_inbound_channel (void *cls, | ||
1501 | struct GNUNET_CADET_Channel *channel, | ||
1502 | const struct GNUNET_PeerIdentity *initiator) | ||
1503 | { | ||
1504 | struct PeerContext *peer_ctx; | ||
1505 | |||
1506 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
1507 | "New channel was established to us (Peer %s).\n", | ||
1508 | GNUNET_i2s (initiator)); | ||
1509 | GNUNET_assert (NULL != channel); /* according to cadet API */ | ||
1510 | /* Make sure we 'know' about this peer */ | ||
1511 | peer_ctx = create_or_get_peer_ctx (initiator); | ||
1512 | set_peer_live (peer_ctx); | ||
1513 | /* We only accept one incoming channel per peer */ | ||
1514 | if (GNUNET_YES == Peers_check_peer_send_intention (initiator)) | ||
1515 | { | ||
1516 | set_channel_flag (peer_ctx->recv_channel_flags, | ||
1517 | Peers_CHANNEL_ESTABLISHED_TWICE); | ||
1518 | GNUNET_CADET_channel_destroy (channel); | ||
1519 | /* return the channel context */ | ||
1520 | return &peer_ctx->peer_id; | ||
1521 | } | ||
1522 | peer_ctx->recv_channel = channel; | ||
1523 | return &peer_ctx->peer_id; | ||
1524 | } | ||
1525 | |||
1526 | |||
1527 | /** | ||
1528 | * @brief Check whether a sending channel towards the given peer exists | ||
1529 | * | ||
1530 | * @param peer the peer to check for | ||
1531 | * | ||
1532 | * @return #GNUNET_YES if a sending channel towards that peer exists | ||
1533 | * #GNUNET_NO otherwise | ||
1534 | */ | ||
1535 | int | ||
1536 | Peers_check_sending_channel_exists (const struct GNUNET_PeerIdentity *peer) | ||
1537 | { | ||
1538 | struct PeerContext *peer_ctx; | ||
1539 | |||
1540 | if (GNUNET_NO == Peers_check_peer_known (peer)) | ||
1541 | { /* If no such peer exists, there is no channel */ | ||
1542 | return GNUNET_NO; | ||
1543 | } | ||
1544 | peer_ctx = get_peer_ctx (peer); | ||
1545 | if (NULL == peer_ctx->send_channel) | ||
1546 | { | ||
1547 | return GNUNET_NO; | ||
1548 | } | ||
1549 | return GNUNET_YES; | ||
1550 | } | ||
1551 | |||
1552 | |||
1553 | /** | ||
1554 | * @brief check whether the given channel is the sending channel of the given | ||
1555 | * peer | ||
1556 | * | ||
1557 | * @param peer the peer in question | ||
1558 | * @param channel the channel to check for | ||
1559 | * @param role either #Peers_CHANNEL_ROLE_SENDING, or | ||
1560 | * #Peers_CHANNEL_ROLE_RECEIVING | ||
1561 | * | ||
1562 | * @return #GNUNET_YES if the given chennel is the sending channel of the peer | ||
1563 | * #GNUNET_NO otherwise | ||
1564 | */ | ||
1565 | int | ||
1566 | Peers_check_channel_role (const struct GNUNET_PeerIdentity *peer, | ||
1567 | const struct GNUNET_CADET_Channel *channel, | ||
1568 | enum Peers_ChannelRole role) | ||
1569 | { | ||
1570 | const struct PeerContext *peer_ctx; | ||
1571 | |||
1572 | if (GNUNET_NO == Peers_check_peer_known (peer)) | ||
1573 | { | ||
1574 | return GNUNET_NO; | ||
1575 | } | ||
1576 | peer_ctx = get_peer_ctx (peer); | ||
1577 | if ( (Peers_CHANNEL_ROLE_SENDING == role) && | ||
1578 | (channel == peer_ctx->send_channel) ) | ||
1579 | { | ||
1580 | return GNUNET_YES; | ||
1581 | } | ||
1582 | if ( (Peers_CHANNEL_ROLE_RECEIVING == role) && | ||
1583 | (channel == peer_ctx->recv_channel) ) | ||
1584 | { | ||
1585 | return GNUNET_YES; | ||
1586 | } | ||
1587 | return GNUNET_NO; | ||
1588 | } | ||
1589 | |||
1590 | |||
1591 | /** | ||
1592 | * @brief Destroy the send channel of a peer e.g. stop indicating a sending | ||
1593 | * intention to another peer | ||
1594 | * | ||
1595 | * If there is also no channel to receive messages from that peer, remove it | ||
1596 | * from the peermap. | ||
1597 | * TODO really? | ||
1598 | * | ||
1599 | * @peer the peer identity of the peer whose sending channel to destroy | ||
1600 | * @return #GNUNET_YES if channel was destroyed | ||
1601 | * #GNUNET_NO otherwise | ||
1602 | */ | ||
1603 | int | ||
1604 | Peers_destroy_sending_channel (const struct GNUNET_PeerIdentity *peer) | ||
1605 | { | ||
1606 | struct PeerContext *peer_ctx; | ||
1607 | |||
1608 | if (GNUNET_NO == Peers_check_peer_known (peer)) | ||
1609 | { | ||
1610 | return GNUNET_NO; | ||
1611 | } | ||
1612 | peer_ctx = get_peer_ctx (peer); | ||
1613 | if (NULL != peer_ctx->send_channel) | ||
1614 | { | ||
1615 | set_channel_flag (peer_ctx->send_channel_flags, Peers_CHANNEL_CLEAN); | ||
1616 | GNUNET_CADET_channel_destroy (peer_ctx->send_channel); | ||
1617 | peer_ctx->send_channel = NULL; | ||
1618 | (void) Peers_check_connected (peer); | ||
1619 | return GNUNET_YES; | ||
1620 | } | ||
1621 | return GNUNET_NO; | ||
1622 | } | ||
1623 | |||
1624 | /** | ||
1625 | * This is called when a channel is destroyed. | ||
1626 | * | ||
1627 | * @param cls The closure | ||
1628 | * @param channel The channel being closed | ||
1629 | * @param channel_ctx The context associated with this channel | ||
1630 | */ | ||
1631 | void | ||
1632 | Peers_cleanup_destroyed_channel (void *cls, | ||
1633 | const struct GNUNET_CADET_Channel *channel) | ||
1634 | { | ||
1635 | struct GNUNET_PeerIdentity *peer = cls; | ||
1636 | struct PeerContext *peer_ctx; | ||
1637 | |||
1638 | if (GNUNET_NO == Peers_check_peer_known (peer)) | ||
1639 | {/* We don't want to implicitly create a context that we're about to kill */ | ||
1640 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
1641 | "channel (%s) without associated context was destroyed\n", | ||
1642 | GNUNET_i2s (peer)); | ||
1643 | return; | ||
1644 | } | ||
1645 | peer_ctx = get_peer_ctx (peer); | ||
1646 | |||
1647 | /* If our peer issued the destruction of the channel, the #Peers_TO_DESTROY | ||
1648 | * flag will be set. In this case simply make sure that the channels are | ||
1649 | * cleaned. */ | ||
1650 | /* FIXME This distinction seems to be redundant */ | ||
1651 | if (Peers_check_peer_flag (peer, Peers_TO_DESTROY)) | ||
1652 | {/* We initiatad the destruction of this particular peer */ | ||
1653 | if (channel == peer_ctx->send_channel) | ||
1654 | peer_ctx->send_channel = NULL; | ||
1655 | else if (channel == peer_ctx->recv_channel) | ||
1656 | peer_ctx->recv_channel = NULL; | ||
1657 | |||
1658 | if (NULL != peer_ctx->send_channel) | ||
1659 | { | ||
1660 | GNUNET_CADET_channel_destroy (peer_ctx->send_channel); | ||
1661 | peer_ctx->send_channel = NULL; | ||
1662 | } | ||
1663 | if (NULL != peer_ctx->recv_channel) | ||
1664 | { | ||
1665 | GNUNET_CADET_channel_destroy (peer_ctx->recv_channel); | ||
1666 | peer_ctx->recv_channel = NULL; | ||
1667 | } | ||
1668 | /* Set the #Peers_ONLINE flag accordingly */ | ||
1669 | (void) Peers_check_connected (peer); | ||
1670 | return; | ||
1671 | } | ||
1672 | |||
1673 | else | ||
1674 | { /* We did not initiate the destruction of this peer */ | ||
1675 | if (channel == peer_ctx->send_channel) | ||
1676 | { /* Something (but us) killd the channel - clean up peer */ | ||
1677 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
1678 | "send channel (%s) was destroyed - cleaning up\n", | ||
1679 | GNUNET_i2s (peer)); | ||
1680 | peer_ctx->send_channel = NULL; | ||
1681 | } | ||
1682 | else if (channel == peer_ctx->recv_channel) | ||
1683 | { /* Other peer doesn't want to send us messages anymore */ | ||
1684 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
1685 | "Peer %s destroyed recv channel - cleaning up channel\n", | ||
1686 | GNUNET_i2s (peer)); | ||
1687 | peer_ctx->recv_channel = NULL; | ||
1688 | } | ||
1689 | else | ||
1690 | { | ||
1691 | LOG (GNUNET_ERROR_TYPE_WARNING, | ||
1692 | "unknown channel (%s) was destroyed\n", | ||
1693 | GNUNET_i2s (peer)); | ||
1694 | } | ||
1695 | } | ||
1696 | (void) Peers_check_connected (peer); | ||
1697 | } | ||
1698 | |||
1699 | /** | ||
1700 | * @brief Send a message to another peer. | ||
1701 | * | ||
1702 | * Keeps track about pending messages so they can be properly removed when the | ||
1703 | * peer is destroyed. | ||
1704 | * | ||
1705 | * @param peer receeiver of the message | ||
1706 | * @param ev envelope of the message | ||
1707 | * @param type type of the message | ||
1708 | */ | ||
1709 | void | ||
1710 | Peers_send_message (const struct GNUNET_PeerIdentity *peer, | ||
1711 | struct GNUNET_MQ_Envelope *ev, | ||
1712 | const char *type) | ||
1713 | { | ||
1714 | struct PendingMessage *pending_msg; | ||
1715 | struct GNUNET_MQ_Handle *mq; | ||
1716 | |||
1717 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1718 | "Sending message to %s of type %s\n", | ||
1719 | GNUNET_i2s (peer), | ||
1720 | type); | ||
1721 | pending_msg = insert_pending_message (peer, ev, type); | ||
1722 | mq = get_mq (peer); | ||
1723 | GNUNET_MQ_notify_sent (ev, | ||
1724 | mq_notify_sent_cb, | ||
1725 | pending_msg); | ||
1726 | GNUNET_MQ_send (mq, ev); | ||
1727 | } | ||
1728 | |||
1729 | /** | ||
1730 | * @brief Schedule a operation on given peer | ||
1731 | * | ||
1732 | * Avoids scheduling an operation twice. | ||
1733 | * | ||
1734 | * @param peer the peer we want to schedule the operation for once it gets live | ||
1735 | * | ||
1736 | * @return #GNUNET_YES if the operation was scheduled | ||
1737 | * #GNUNET_NO otherwise | ||
1738 | */ | ||
1739 | int | ||
1740 | Peers_schedule_operation (const struct GNUNET_PeerIdentity *peer, | ||
1741 | const PeerOp peer_op) | ||
1742 | { | ||
1743 | struct PeerPendingOp pending_op; | ||
1744 | struct PeerContext *peer_ctx; | ||
1745 | |||
1746 | if (0 == GNUNET_CRYPTO_cmp_peer_identity (peer, &own_identity)) | ||
1747 | { | ||
1748 | return GNUNET_NO; | ||
1749 | } | ||
1750 | GNUNET_assert (GNUNET_YES == Peers_check_peer_known (peer)); | ||
1751 | |||
1752 | //TODO if LIVE/ONLINE execute immediately | ||
1753 | |||
1754 | if (GNUNET_NO == check_operation_scheduled (peer, peer_op)) | ||
1755 | { | ||
1756 | peer_ctx = get_peer_ctx (peer); | ||
1757 | pending_op.op = peer_op; | ||
1758 | pending_op.op_cls = NULL; | ||
1759 | GNUNET_array_append (peer_ctx->pending_ops, | ||
1760 | peer_ctx->num_pending_ops, | ||
1761 | pending_op); | ||
1762 | return GNUNET_YES; | ||
1763 | } | ||
1764 | return GNUNET_NO; | ||
1765 | } | ||
1766 | |||
1767 | /** | ||
1768 | * @brief Get the recv_channel of @a peer. | ||
1769 | * Needed to correctly handle (call #GNUNET_CADET_receive_done()) incoming | ||
1770 | * messages. | ||
1771 | * | ||
1772 | * @param peer The peer to get the recv_channel from. | ||
1773 | * | ||
1774 | * @return The recv_channel. | ||
1775 | */ | ||
1776 | struct GNUNET_CADET_Channel * | ||
1777 | Peers_get_recv_channel (const struct GNUNET_PeerIdentity *peer) | ||
1778 | { | ||
1779 | struct PeerContext *peer_ctx; | ||
1780 | |||
1781 | GNUNET_assert (GNUNET_YES == Peers_check_peer_known (peer)); | ||
1782 | peer_ctx = get_peer_ctx (peer); | ||
1783 | return peer_ctx->recv_channel; | ||
1784 | } | ||
1785 | /*********************************************************************** | ||
1786 | * /Old gnunet-service-rps_peers.c | ||
1787 | ***********************************************************************/ | ||
1788 | |||
1789 | |||
69 | /*********************************************************************** | 1790 | /*********************************************************************** |
70 | * Housekeeping with clients | 1791 | * Housekeeping with clients |
71 | ***********************************************************************/ | 1792 | ***********************************************************************/ |
@@ -847,6 +2568,7 @@ cleanup_destroyed_channel (void *cls, | |||
847 | { | 2568 | { |
848 | struct GNUNET_PeerIdentity *peer = cls; | 2569 | struct GNUNET_PeerIdentity *peer = cls; |
849 | uint32_t *channel_flag; | 2570 | uint32_t *channel_flag; |
2571 | struct PeerContext *peer_ctx; | ||
850 | 2572 | ||
851 | if (GNUNET_NO == Peers_check_peer_known (peer)) | 2573 | if (GNUNET_NO == Peers_check_peer_known (peer)) |
852 | { /* We don't know a context to that peer */ | 2574 | { /* We don't know a context to that peer */ |
@@ -856,6 +2578,15 @@ cleanup_destroyed_channel (void *cls, | |||
856 | return; | 2578 | return; |
857 | } | 2579 | } |
858 | 2580 | ||
2581 | peer_ctx = get_peer_ctx (peer); | ||
2582 | if (GNUNET_YES == Peers_check_channel_role (peer, channel, Peers_CHANNEL_ROLE_RECEIVING)) | ||
2583 | { | ||
2584 | set_channel_flag (peer_ctx->recv_channel_flags, Peers_CHANNEL_DESTROING); | ||
2585 | } else if (GNUNET_YES == Peers_check_channel_role (peer, channel, Peers_CHANNEL_ROLE_SENDING)) | ||
2586 | { | ||
2587 | set_channel_flag (peer_ctx->send_channel_flags, Peers_CHANNEL_DESTROING); | ||
2588 | } | ||
2589 | |||
859 | if (GNUNET_YES == Peers_check_peer_flag (peer, Peers_TO_DESTROY)) | 2590 | if (GNUNET_YES == Peers_check_peer_flag (peer, Peers_TO_DESTROY)) |
860 | { /* We are in the middle of removing that peer from our knowledge. In this | 2591 | { /* We are in the middle of removing that peer from our knowledge. In this |
861 | case simply make sure that the channels are cleaned. */ | 2592 | case simply make sure that the channels are cleaned. */ |
@@ -1121,7 +2852,6 @@ handle_client_request_cancel (void *cls, | |||
1121 | (rep_cls->id != ntohl (msg->id)) ) | 2852 | (rep_cls->id != ntohl (msg->id)) ) |
1122 | rep_cls = rep_cls->next; | 2853 | rep_cls = rep_cls->next; |
1123 | GNUNET_assert (rep_cls->id == ntohl (msg->id)); | 2854 | GNUNET_assert (rep_cls->id == ntohl (msg->id)); |
1124 | RPS_sampler_request_cancel (rep_cls->req_handle); | ||
1125 | destroy_reply_cls (rep_cls); | 2855 | destroy_reply_cls (rep_cls); |
1126 | GNUNET_SERVICE_client_continue (cli_ctx->client); | 2856 | GNUNET_SERVICE_client_continue (cli_ctx->client); |
1127 | } | 2857 | } |
@@ -1239,24 +2969,24 @@ handle_peer_push (void *cls, | |||
1239 | (3 == mal_type) ) | 2969 | (3 == mal_type) ) |
1240 | { /* Try to maximise representation */ | 2970 | { /* Try to maximise representation */ |
1241 | tmp_att_peer = GNUNET_new (struct AttackedPeer); | 2971 | tmp_att_peer = GNUNET_new (struct AttackedPeer); |
1242 | GNUNET_memcpy (&tmp_att_peer->peer_id, peer, sizeof (struct GNUNET_PeerIdentity)); | 2972 | tmp_att_peer->peer_id = *peer; |
1243 | if (NULL == att_peer_set) | 2973 | if (NULL == att_peer_set) |
1244 | att_peer_set = GNUNET_CONTAINER_multipeermap_create (1, GNUNET_NO); | 2974 | att_peer_set = GNUNET_CONTAINER_multipeermap_create (1, GNUNET_NO); |
1245 | if (GNUNET_NO == GNUNET_CONTAINER_multipeermap_contains (att_peer_set, | 2975 | if (GNUNET_NO == |
1246 | peer)) | 2976 | GNUNET_CONTAINER_multipeermap_contains (att_peer_set, |
2977 | peer)) | ||
1247 | { | 2978 | { |
1248 | GNUNET_CONTAINER_DLL_insert (att_peers_head, | 2979 | GNUNET_CONTAINER_DLL_insert (att_peers_head, |
1249 | att_peers_tail, | 2980 | att_peers_tail, |
1250 | tmp_att_peer); | 2981 | tmp_att_peer); |
1251 | add_peer_array_to_set (peer, 1, att_peer_set); | 2982 | add_peer_array_to_set (peer, 1, att_peer_set); |
1252 | } | 2983 | } |
1253 | GNUNET_CADET_receive_done (Peers_get_recv_channel (peer)); | ||
1254 | } | 2984 | } |
1255 | 2985 | ||
1256 | 2986 | ||
1257 | else if (2 == mal_type) | 2987 | else if (2 == mal_type) |
1258 | { /* We attack one single well-known peer - simply ignore */ | 2988 | { |
1259 | GNUNET_CADET_receive_done (Peers_get_recv_channel (peer)); | 2989 | /* We attack one single well-known peer - simply ignore */ |
1260 | } | 2990 | } |
1261 | #endif /* ENABLE_MALICIOUS */ | 2991 | #endif /* ENABLE_MALICIOUS */ |
1262 | 2992 | ||
@@ -1289,7 +3019,6 @@ handle_peer_pull_request (void *cls, | |||
1289 | || 3 == mal_type) | 3019 | || 3 == mal_type) |
1290 | { /* Try to maximise representation */ | 3020 | { /* Try to maximise representation */ |
1291 | send_pull_reply (peer, mal_peers, num_mal_peers); | 3021 | send_pull_reply (peer, mal_peers, num_mal_peers); |
1292 | GNUNET_CADET_receive_done (Peers_get_recv_channel (peer)); | ||
1293 | } | 3022 | } |
1294 | 3023 | ||
1295 | else if (2 == mal_type) | 3024 | else if (2 == mal_type) |
@@ -1298,7 +3027,6 @@ handle_peer_pull_request (void *cls, | |||
1298 | { | 3027 | { |
1299 | send_pull_reply (peer, mal_peers, num_mal_peers); | 3028 | send_pull_reply (peer, mal_peers, num_mal_peers); |
1300 | } | 3029 | } |
1301 | GNUNET_CADET_receive_done (Peers_get_recv_channel (peer)); | ||
1302 | } | 3030 | } |
1303 | #endif /* ENABLE_MALICIOUS */ | 3031 | #endif /* ENABLE_MALICIOUS */ |
1304 | 3032 | ||
@@ -1360,7 +3088,7 @@ static void | |||
1360 | handle_peer_pull_reply (void *cls, | 3088 | handle_peer_pull_reply (void *cls, |
1361 | const struct GNUNET_RPS_P2P_PullReplyMessage *msg) | 3089 | const struct GNUNET_RPS_P2P_PullReplyMessage *msg) |
1362 | { | 3090 | { |
1363 | struct GNUNET_PeerIdentity *peers; | 3091 | const struct GNUNET_PeerIdentity *peers; |
1364 | struct GNUNET_PeerIdentity *sender = cls; | 3092 | struct GNUNET_PeerIdentity *sender = cls; |
1365 | uint32_t i; | 3093 | uint32_t i; |
1366 | #ifdef ENABLE_MALICIOUS | 3094 | #ifdef ENABLE_MALICIOUS |
@@ -1373,12 +3101,11 @@ handle_peer_pull_reply (void *cls, | |||
1373 | // We shouldn't even receive pull replies as we're not sending | 3101 | // We shouldn't even receive pull replies as we're not sending |
1374 | if (2 == mal_type) | 3102 | if (2 == mal_type) |
1375 | { | 3103 | { |
1376 | GNUNET_CADET_receive_done (Peers_get_recv_channel (sender)); | ||
1377 | } | 3104 | } |
1378 | #endif /* ENABLE_MALICIOUS */ | 3105 | #endif /* ENABLE_MALICIOUS */ |
1379 | 3106 | ||
1380 | /* Do actual logic */ | 3107 | /* Do actual logic */ |
1381 | peers = (struct GNUNET_PeerIdentity *) &msg[1]; | 3108 | peers = (const struct GNUNET_PeerIdentity *) &msg[1]; |
1382 | 3109 | ||
1383 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 3110 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
1384 | "PULL REPLY received, got following %u peers:\n", | 3111 | "PULL REPLY received, got following %u peers:\n", |
@@ -2132,7 +3859,6 @@ shutdown_task (void *cls) | |||
2132 | reply_cls); | 3859 | reply_cls); |
2133 | GNUNET_free (reply_cls); | 3860 | GNUNET_free (reply_cls); |
2134 | } | 3861 | } |
2135 | GNUNET_MQ_destroy (client_ctx->mq); | ||
2136 | GNUNET_CONTAINER_DLL_remove (cli_ctx_head, cli_ctx_tail, client_ctx); | 3862 | GNUNET_CONTAINER_DLL_remove (cli_ctx_head, cli_ctx_tail, client_ctx); |
2137 | GNUNET_free (client_ctx); | 3863 | GNUNET_free (client_ctx); |
2138 | } | 3864 | } |
@@ -2150,6 +3876,7 @@ shutdown_task (void *cls) | |||
2150 | GNUNET_NSE_disconnect (nse); | 3876 | GNUNET_NSE_disconnect (nse); |
2151 | RPS_sampler_destroy (prot_sampler); | 3877 | RPS_sampler_destroy (prot_sampler); |
2152 | RPS_sampler_destroy (client_sampler); | 3878 | RPS_sampler_destroy (client_sampler); |
3879 | GNUNET_CADET_close_port (cadet_port); | ||
2153 | GNUNET_CADET_disconnect (cadet_handle); | 3880 | GNUNET_CADET_disconnect (cadet_handle); |
2154 | View_destroy (); | 3881 | View_destroy (); |
2155 | CustomPeerMap_destroy (push_map); | 3882 | CustomPeerMap_destroy (push_map); |
@@ -2240,26 +3967,6 @@ run (void *cls, | |||
2240 | const struct GNUNET_CONFIGURATION_Handle *c, | 3967 | const struct GNUNET_CONFIGURATION_Handle *c, |
2241 | struct GNUNET_SERVICE_Handle *service) | 3968 | struct GNUNET_SERVICE_Handle *service) |
2242 | { | 3969 | { |
2243 | struct GNUNET_MQ_MessageHandler cadet_handlers[] = { | ||
2244 | GNUNET_MQ_hd_fixed_size (peer_check, | ||
2245 | GNUNET_MESSAGE_TYPE_RPS_PP_CHECK_LIVE, | ||
2246 | struct GNUNET_MessageHeader, | ||
2247 | NULL), | ||
2248 | GNUNET_MQ_hd_fixed_size (peer_push, | ||
2249 | GNUNET_MESSAGE_TYPE_RPS_PP_PUSH, | ||
2250 | struct GNUNET_MessageHeader, | ||
2251 | NULL), | ||
2252 | GNUNET_MQ_hd_fixed_size (peer_pull_request, | ||
2253 | GNUNET_MESSAGE_TYPE_RPS_PP_PULL_REQUEST, | ||
2254 | struct GNUNET_MessageHeader, | ||
2255 | NULL), | ||
2256 | GNUNET_MQ_hd_var_size (peer_pull_reply, | ||
2257 | GNUNET_MESSAGE_TYPE_RPS_PP_PULL_REPLY, | ||
2258 | struct GNUNET_RPS_P2P_PullReplyMessage, | ||
2259 | NULL), | ||
2260 | GNUNET_MQ_handler_end () | ||
2261 | }; | ||
2262 | |||
2263 | int size; | 3970 | int size; |
2264 | int out_size; | 3971 | int out_size; |
2265 | char* fn_valid_peers; | 3972 | char* fn_valid_peers; |
@@ -2349,6 +4056,27 @@ run (void *cls, | |||
2349 | 4056 | ||
2350 | 4057 | ||
2351 | /* Initialise cadet */ | 4058 | /* Initialise cadet */ |
4059 | /* There exists a copy-paste-clone in get_channel() */ | ||
4060 | struct GNUNET_MQ_MessageHandler cadet_handlers[] = { | ||
4061 | GNUNET_MQ_hd_fixed_size (peer_check, | ||
4062 | GNUNET_MESSAGE_TYPE_RPS_PP_CHECK_LIVE, | ||
4063 | struct GNUNET_MessageHeader, | ||
4064 | NULL), | ||
4065 | GNUNET_MQ_hd_fixed_size (peer_push, | ||
4066 | GNUNET_MESSAGE_TYPE_RPS_PP_PUSH, | ||
4067 | struct GNUNET_MessageHeader, | ||
4068 | NULL), | ||
4069 | GNUNET_MQ_hd_fixed_size (peer_pull_request, | ||
4070 | GNUNET_MESSAGE_TYPE_RPS_PP_PULL_REQUEST, | ||
4071 | struct GNUNET_MessageHeader, | ||
4072 | NULL), | ||
4073 | GNUNET_MQ_hd_var_size (peer_pull_reply, | ||
4074 | GNUNET_MESSAGE_TYPE_RPS_PP_PULL_REPLY, | ||
4075 | struct GNUNET_RPS_P2P_PullReplyMessage, | ||
4076 | NULL), | ||
4077 | GNUNET_MQ_handler_end () | ||
4078 | }; | ||
4079 | |||
2352 | cadet_handle = GNUNET_CADET_connect (cfg); | 4080 | cadet_handle = GNUNET_CADET_connect (cfg); |
2353 | GNUNET_assert (NULL != cadet_handle); | 4081 | GNUNET_assert (NULL != cadet_handle); |
2354 | GNUNET_CRYPTO_hash (GNUNET_APPLICATION_PORT_RPS, | 4082 | GNUNET_CRYPTO_hash (GNUNET_APPLICATION_PORT_RPS, |
@@ -2365,7 +4093,7 @@ run (void *cls, | |||
2365 | 4093 | ||
2366 | peerinfo_handle = GNUNET_PEERINFO_connect (cfg); | 4094 | peerinfo_handle = GNUNET_PEERINFO_connect (cfg); |
2367 | Peers_initialise (fn_valid_peers, cadet_handle, cleanup_destroyed_channel, | 4095 | Peers_initialise (fn_valid_peers, cadet_handle, cleanup_destroyed_channel, |
2368 | cadet_handlers, &own_identity); | 4096 | &own_identity); |
2369 | GNUNET_free (fn_valid_peers); | 4097 | GNUNET_free (fn_valid_peers); |
2370 | 4098 | ||
2371 | /* Initialise sampler */ | 4099 | /* Initialise sampler */ |
diff --git a/src/rps/gnunet-service-rps_peers.c b/src/rps/gnunet-service-rps_peers.c deleted file mode 100644 index 58aa84ccf..000000000 --- a/src/rps/gnunet-service-rps_peers.c +++ /dev/null | |||
@@ -1,1694 +0,0 @@ | |||
1 | /* | ||
2 | This file is part of GNUnet. | ||
3 | Copyright (C) | ||
4 | |||
5 | GNUnet is free software; you can redistribute it and/or modify | ||
6 | it under the terms of the GNU General Public License as published | ||
7 | by the Free Software Foundation; either version 3, or (at your | ||
8 | option) any later version. | ||
9 | |||
10 | GNUnet is distributed in the hope that it will be useful, but | ||
11 | WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
13 | General Public License for more details. | ||
14 | |||
15 | You should have received a copy of the GNU General Public License | ||
16 | along with GNUnet; see the file COPYING. If not, write to the | ||
17 | Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | ||
18 | Boston, MA 02110-1301, USA. | ||
19 | */ | ||
20 | |||
21 | /** | ||
22 | * @file rps/gnunet-service-rps_peers.c | ||
23 | * @brief utilities for managing (information about) peers | ||
24 | * @author Julius Bünger | ||
25 | */ | ||
26 | #include "platform.h" | ||
27 | #include "gnunet_applications.h" | ||
28 | #include "gnunet_util_lib.h" | ||
29 | #include "gnunet_cadet_service.h" | ||
30 | #include <inttypes.h> | ||
31 | #include "rps.h" | ||
32 | #include "gnunet-service-rps_peers.h" | ||
33 | |||
34 | |||
35 | |||
36 | #define LOG(kind, ...) GNUNET_log_from(kind,"rps-peers",__VA_ARGS__) | ||
37 | |||
38 | |||
39 | /** | ||
40 | * Set a peer flag of given peer context. | ||
41 | */ | ||
42 | #define set_peer_flag(peer_ctx, mask) ((peer_ctx->peer_flags) |= (mask)) | ||
43 | |||
44 | /** | ||
45 | * Get peer flag of given peer context. | ||
46 | */ | ||
47 | #define check_peer_flag_set(peer_ctx, mask)\ | ||
48 | ((peer_ctx->peer_flags) & (mask) ? GNUNET_YES : GNUNET_NO) | ||
49 | |||
50 | /** | ||
51 | * Unset flag of given peer context. | ||
52 | */ | ||
53 | #define unset_peer_flag(peer_ctx, mask) ((peer_ctx->peer_flags) &= ~(mask)) | ||
54 | |||
55 | /** | ||
56 | * Set a channel flag of given channel context. | ||
57 | */ | ||
58 | #define set_channel_flag(channel_flags, mask) ((*channel_flags) |= (mask)) | ||
59 | |||
60 | /** | ||
61 | * Get channel flag of given channel context. | ||
62 | */ | ||
63 | #define check_channel_flag_set(channel_flags, mask)\ | ||
64 | ((*channel_flags) & (mask) ? GNUNET_YES : GNUNET_NO) | ||
65 | |||
66 | /** | ||
67 | * Unset flag of given channel context. | ||
68 | */ | ||
69 | #define unset_channel_flag(channel_flags, mask) ((*channel_flags) &= ~(mask)) | ||
70 | |||
71 | |||
72 | |||
73 | /** | ||
74 | * Pending operation on peer consisting of callback and closure | ||
75 | * | ||
76 | * When an operation cannot be executed right now this struct is used to store | ||
77 | * the callback and closure for later execution. | ||
78 | */ | ||
79 | struct PeerPendingOp | ||
80 | { | ||
81 | /** | ||
82 | * Callback | ||
83 | */ | ||
84 | PeerOp op; | ||
85 | |||
86 | /** | ||
87 | * Closure | ||
88 | */ | ||
89 | void *op_cls; | ||
90 | }; | ||
91 | |||
92 | /** | ||
93 | * List containing all messages that are yet to be send | ||
94 | * | ||
95 | * This is used to keep track of all messages that have not been sent yet. When | ||
96 | * a peer is to be removed the pending messages can be removed properly. | ||
97 | */ | ||
98 | struct PendingMessage | ||
99 | { | ||
100 | /** | ||
101 | * DLL next, prev | ||
102 | */ | ||
103 | struct PendingMessage *next; | ||
104 | struct PendingMessage *prev; | ||
105 | |||
106 | /** | ||
107 | * The envelope to the corresponding message | ||
108 | */ | ||
109 | struct GNUNET_MQ_Envelope *ev; | ||
110 | |||
111 | /** | ||
112 | * The corresponding context | ||
113 | */ | ||
114 | struct PeerContext *peer_ctx; | ||
115 | |||
116 | /** | ||
117 | * The message type | ||
118 | */ | ||
119 | const char *type; | ||
120 | }; | ||
121 | |||
122 | /** | ||
123 | * Struct used to keep track of other peer's status | ||
124 | * | ||
125 | * This is stored in a multipeermap. | ||
126 | * It contains information such as cadet channels, a message queue for sending, | ||
127 | * status about the channels, the pending operations on this peer and some flags | ||
128 | * about the status of the peer itself. (live, valid, ...) | ||
129 | */ | ||
130 | struct PeerContext | ||
131 | { | ||
132 | /** | ||
133 | * Message queue open to client | ||
134 | */ | ||
135 | struct GNUNET_MQ_Handle *mq; | ||
136 | |||
137 | /** | ||
138 | * Channel open to client. | ||
139 | */ | ||
140 | struct GNUNET_CADET_Channel *send_channel; | ||
141 | |||
142 | /** | ||
143 | * Flags to the sending channel | ||
144 | */ | ||
145 | uint32_t *send_channel_flags; | ||
146 | |||
147 | /** | ||
148 | * Channel open from client. | ||
149 | */ | ||
150 | struct GNUNET_CADET_Channel *recv_channel; // unneeded? | ||
151 | |||
152 | /** | ||
153 | * Flags to the receiving channel | ||
154 | */ | ||
155 | uint32_t *recv_channel_flags; | ||
156 | |||
157 | /** | ||
158 | * Array of pending operations on this peer. | ||
159 | */ | ||
160 | struct PeerPendingOp *pending_ops; | ||
161 | |||
162 | /** | ||
163 | * Handle to the callback given to cadet_ntfy_tmt_rdy() | ||
164 | * | ||
165 | * To be canceled on shutdown. | ||
166 | */ | ||
167 | struct PendingMessage *liveliness_check_pending; | ||
168 | |||
169 | /** | ||
170 | * Number of pending operations. | ||
171 | */ | ||
172 | unsigned int num_pending_ops; | ||
173 | |||
174 | /** | ||
175 | * Identity of the peer | ||
176 | */ | ||
177 | struct GNUNET_PeerIdentity peer_id; | ||
178 | |||
179 | /** | ||
180 | * Flags indicating status of peer | ||
181 | */ | ||
182 | uint32_t peer_flags; | ||
183 | |||
184 | /** | ||
185 | * Last time we received something from that peer. | ||
186 | */ | ||
187 | struct GNUNET_TIME_Absolute last_message_recv; | ||
188 | |||
189 | /** | ||
190 | * Last time we received a keepalive message. | ||
191 | */ | ||
192 | struct GNUNET_TIME_Absolute last_keepalive; | ||
193 | |||
194 | /** | ||
195 | * DLL with all messages that are yet to be sent | ||
196 | */ | ||
197 | struct PendingMessage *pending_messages_head; | ||
198 | struct PendingMessage *pending_messages_tail; | ||
199 | |||
200 | /** | ||
201 | * This is pobably followed by 'statistical' data (when we first saw | ||
202 | * him, how did we get his ID, how many pushes (in a timeinterval), | ||
203 | * ...) | ||
204 | */ | ||
205 | }; | ||
206 | |||
207 | /** | ||
208 | * @brief Closure to #valid_peer_iterator | ||
209 | */ | ||
210 | struct PeersIteratorCls | ||
211 | { | ||
212 | /** | ||
213 | * Iterator function | ||
214 | */ | ||
215 | PeersIterator iterator; | ||
216 | |||
217 | /** | ||
218 | * Closure to iterator | ||
219 | */ | ||
220 | void *cls; | ||
221 | }; | ||
222 | |||
223 | /** | ||
224 | * @brief Hashmap of valid peers. | ||
225 | */ | ||
226 | static struct GNUNET_CONTAINER_MultiPeerMap *valid_peers; | ||
227 | |||
228 | /** | ||
229 | * @brief Maximum number of valid peers to keep. | ||
230 | * TODO read from config | ||
231 | */ | ||
232 | static uint32_t num_valid_peers_max = UINT32_MAX; | ||
233 | |||
234 | /** | ||
235 | * @brief Filename of the file that stores the valid peers persistently. | ||
236 | */ | ||
237 | static char *filename_valid_peers; | ||
238 | |||
239 | /** | ||
240 | * Set of all peers to keep track of them. | ||
241 | */ | ||
242 | static struct GNUNET_CONTAINER_MultiPeerMap *peer_map; | ||
243 | |||
244 | /** | ||
245 | * Own #GNUNET_PeerIdentity. | ||
246 | */ | ||
247 | static const struct GNUNET_PeerIdentity *own_identity; | ||
248 | |||
249 | /** | ||
250 | * Cadet handle. | ||
251 | */ | ||
252 | static struct GNUNET_CADET_Handle *cadet_handle; | ||
253 | |||
254 | /** | ||
255 | * @brief Disconnect handler | ||
256 | */ | ||
257 | static GNUNET_CADET_DisconnectEventHandler cleanup_destroyed_channel; | ||
258 | |||
259 | /** | ||
260 | * @brief cadet handlers | ||
261 | */ | ||
262 | static const struct GNUNET_MQ_MessageHandler *cadet_handlers; | ||
263 | |||
264 | |||
265 | |||
266 | /** | ||
267 | * @brief Get the #PeerContext associated with a peer | ||
268 | * | ||
269 | * @param peer the peer id | ||
270 | * | ||
271 | * @return the #PeerContext | ||
272 | */ | ||
273 | static struct PeerContext * | ||
274 | get_peer_ctx (const struct GNUNET_PeerIdentity *peer) | ||
275 | { | ||
276 | struct PeerContext *ctx; | ||
277 | int ret; | ||
278 | |||
279 | ret = GNUNET_CONTAINER_multipeermap_contains (peer_map, peer); | ||
280 | GNUNET_assert (GNUNET_YES == ret); | ||
281 | ctx = GNUNET_CONTAINER_multipeermap_get (peer_map, peer); | ||
282 | GNUNET_assert (NULL != ctx); | ||
283 | return ctx; | ||
284 | } | ||
285 | |||
286 | |||
287 | /** | ||
288 | * @brief Create a new #PeerContext and insert it into the peer map | ||
289 | * | ||
290 | * @param peer the peer to create the #PeerContext for | ||
291 | * | ||
292 | * @return the #PeerContext | ||
293 | */ | ||
294 | static struct PeerContext * | ||
295 | create_peer_ctx (const struct GNUNET_PeerIdentity *peer) | ||
296 | { | ||
297 | struct PeerContext *ctx; | ||
298 | int ret; | ||
299 | |||
300 | GNUNET_assert (GNUNET_NO == Peers_check_peer_known (peer)); | ||
301 | |||
302 | ctx = GNUNET_new (struct PeerContext); | ||
303 | ctx->peer_id = *peer; | ||
304 | ctx->send_channel_flags = GNUNET_new (uint32_t); | ||
305 | ctx->recv_channel_flags = GNUNET_new (uint32_t); | ||
306 | ret = GNUNET_CONTAINER_multipeermap_put (peer_map, peer, ctx, | ||
307 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY); | ||
308 | GNUNET_assert (GNUNET_OK == ret); | ||
309 | return ctx; | ||
310 | } | ||
311 | |||
312 | |||
313 | /** | ||
314 | * @brief Create or get a #PeerContext | ||
315 | * | ||
316 | * @param peer the peer to get the associated context to | ||
317 | * | ||
318 | * @return the context | ||
319 | */ | ||
320 | static struct PeerContext * | ||
321 | create_or_get_peer_ctx (const struct GNUNET_PeerIdentity *peer) | ||
322 | { | ||
323 | if (GNUNET_NO == Peers_check_peer_known (peer)) | ||
324 | { | ||
325 | return create_peer_ctx (peer); | ||
326 | } | ||
327 | return get_peer_ctx (peer); | ||
328 | } | ||
329 | |||
330 | |||
331 | /** | ||
332 | * @brief Check whether we have a connection to this @a peer | ||
333 | * | ||
334 | * Also sets the #Peers_ONLINE flag accordingly | ||
335 | * | ||
336 | * @param peer the peer in question | ||
337 | * | ||
338 | * @return #GNUNET_YES if we are connected | ||
339 | * #GNUNET_NO otherwise | ||
340 | */ | ||
341 | int | ||
342 | Peers_check_connected (const struct GNUNET_PeerIdentity *peer) | ||
343 | { | ||
344 | const struct PeerContext *peer_ctx; | ||
345 | |||
346 | /* If we don't know about this peer we don't know whether it's online */ | ||
347 | if (GNUNET_NO == Peers_check_peer_known (peer)) | ||
348 | { | ||
349 | return GNUNET_NO; | ||
350 | } | ||
351 | /* Get the context */ | ||
352 | peer_ctx = get_peer_ctx (peer); | ||
353 | /* If we have no channel to this peer we don't know whether it's online */ | ||
354 | if ( (NULL == peer_ctx->send_channel) && | ||
355 | (NULL == peer_ctx->recv_channel) ) | ||
356 | { | ||
357 | Peers_unset_peer_flag (peer, Peers_ONLINE); | ||
358 | return GNUNET_NO; | ||
359 | } | ||
360 | /* Otherwise (if we have a channel, we know that it's online */ | ||
361 | Peers_set_peer_flag (peer, Peers_ONLINE); | ||
362 | return GNUNET_YES; | ||
363 | } | ||
364 | |||
365 | |||
366 | /** | ||
367 | * @brief The closure to #get_rand_peer_iterator. | ||
368 | */ | ||
369 | struct GetRandPeerIteratorCls | ||
370 | { | ||
371 | /** | ||
372 | * @brief The index of the peer to return. | ||
373 | * Will be decreased until 0. | ||
374 | * Then current peer is returned. | ||
375 | */ | ||
376 | uint32_t index; | ||
377 | |||
378 | /** | ||
379 | * @brief Pointer to peer to return. | ||
380 | */ | ||
381 | const struct GNUNET_PeerIdentity *peer; | ||
382 | }; | ||
383 | |||
384 | |||
385 | /** | ||
386 | * @brief Iterator function for #get_random_peer_from_peermap. | ||
387 | * | ||
388 | * Implements #GNUNET_CONTAINER_PeerMapIterator. | ||
389 | * Decreases the index until the index is null. | ||
390 | * Then returns the current peer. | ||
391 | * | ||
392 | * @param cls the #GetRandPeerIteratorCls containing index and peer | ||
393 | * @param peer current peer | ||
394 | * @param value unused | ||
395 | * | ||
396 | * @return #GNUNET_YES if we should continue to | ||
397 | * iterate, | ||
398 | * #GNUNET_NO if not. | ||
399 | */ | ||
400 | static int | ||
401 | get_rand_peer_iterator (void *cls, | ||
402 | const struct GNUNET_PeerIdentity *peer, | ||
403 | void *value) | ||
404 | { | ||
405 | struct GetRandPeerIteratorCls *iterator_cls = cls; | ||
406 | if (0 >= iterator_cls->index) | ||
407 | { | ||
408 | iterator_cls->peer = peer; | ||
409 | return GNUNET_NO; | ||
410 | } | ||
411 | iterator_cls->index--; | ||
412 | return GNUNET_YES; | ||
413 | } | ||
414 | |||
415 | |||
416 | /** | ||
417 | * @brief Get a random peer from @a peer_map | ||
418 | * | ||
419 | * @param peer_map the peer_map to get the peer from | ||
420 | * | ||
421 | * @return a random peer | ||
422 | */ | ||
423 | static const struct GNUNET_PeerIdentity * | ||
424 | get_random_peer_from_peermap (const struct | ||
425 | GNUNET_CONTAINER_MultiPeerMap *peer_map) | ||
426 | { | ||
427 | struct GetRandPeerIteratorCls *iterator_cls; | ||
428 | const struct GNUNET_PeerIdentity *ret; | ||
429 | |||
430 | iterator_cls = GNUNET_new (struct GetRandPeerIteratorCls); | ||
431 | iterator_cls->index = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK, | ||
432 | GNUNET_CONTAINER_multipeermap_size (peer_map)); | ||
433 | (void) GNUNET_CONTAINER_multipeermap_iterate (valid_peers, | ||
434 | get_rand_peer_iterator, | ||
435 | iterator_cls); | ||
436 | ret = iterator_cls->peer; | ||
437 | GNUNET_free (iterator_cls); | ||
438 | return ret; | ||
439 | } | ||
440 | |||
441 | |||
442 | /** | ||
443 | * @brief Add a given @a peer to valid peers. | ||
444 | * | ||
445 | * If valid peers are already #num_valid_peers_max, delete a peer previously. | ||
446 | * | ||
447 | * @param peer the peer that is added to the valid peers. | ||
448 | * | ||
449 | * @return #GNUNET_YES if no other peer had to be removed | ||
450 | * #GNUNET_NO otherwise | ||
451 | */ | ||
452 | static int | ||
453 | add_valid_peer (const struct GNUNET_PeerIdentity *peer) | ||
454 | { | ||
455 | const struct GNUNET_PeerIdentity *rand_peer; | ||
456 | int ret; | ||
457 | |||
458 | ret = GNUNET_YES; | ||
459 | while (GNUNET_CONTAINER_multipeermap_size (valid_peers) >= num_valid_peers_max) | ||
460 | { | ||
461 | rand_peer = get_random_peer_from_peermap (valid_peers); | ||
462 | GNUNET_CONTAINER_multipeermap_remove_all (valid_peers, rand_peer); | ||
463 | ret = GNUNET_NO; | ||
464 | } | ||
465 | (void) GNUNET_CONTAINER_multipeermap_put (valid_peers, peer, NULL, | ||
466 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY); | ||
467 | return ret; | ||
468 | } | ||
469 | |||
470 | |||
471 | /** | ||
472 | * @brief Set the peer flag to living and | ||
473 | * call the pending operations on this peer. | ||
474 | * | ||
475 | * Also adds peer to #valid_peers. | ||
476 | * | ||
477 | * @param peer_ctx the #PeerContext of the peer to set live | ||
478 | */ | ||
479 | static void | ||
480 | set_peer_live (struct PeerContext *peer_ctx) | ||
481 | { | ||
482 | struct GNUNET_PeerIdentity *peer; | ||
483 | unsigned int i; | ||
484 | |||
485 | peer = &peer_ctx->peer_id; | ||
486 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
487 | "Peer %s is live and valid, calling %i pending operations on it\n", | ||
488 | GNUNET_i2s (peer), | ||
489 | peer_ctx->num_pending_ops); | ||
490 | |||
491 | if (NULL != peer_ctx->liveliness_check_pending) | ||
492 | { | ||
493 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
494 | "Removing pending liveliness check for peer %s\n", | ||
495 | GNUNET_i2s (&peer_ctx->peer_id)); | ||
496 | // TODO wait until cadet sets mq->cancel_impl | ||
497 | //GNUNET_MQ_send_cancel (peer_ctx->liveliness_check_pending->ev); | ||
498 | GNUNET_free (peer_ctx->liveliness_check_pending); | ||
499 | peer_ctx->liveliness_check_pending = NULL; | ||
500 | } | ||
501 | |||
502 | (void) add_valid_peer (peer); | ||
503 | set_peer_flag (peer_ctx, Peers_ONLINE); | ||
504 | |||
505 | /* Call pending operations */ | ||
506 | for (i = 0; i < peer_ctx->num_pending_ops; i++) | ||
507 | { | ||
508 | peer_ctx->pending_ops[i].op (peer_ctx->pending_ops[i].op_cls, peer); | ||
509 | } | ||
510 | GNUNET_array_grow (peer_ctx->pending_ops, peer_ctx->num_pending_ops, 0); | ||
511 | } | ||
512 | |||
513 | |||
514 | /** | ||
515 | * @brief Get the channel of a peer. If not existing, create. | ||
516 | * | ||
517 | * @param peer the peer id | ||
518 | * @return the #GNUNET_CADET_Channel used to send data to @a peer | ||
519 | */ | ||
520 | struct GNUNET_CADET_Channel * | ||
521 | get_channel (const struct GNUNET_PeerIdentity *peer) | ||
522 | { | ||
523 | struct PeerContext *peer_ctx; | ||
524 | struct GNUNET_HashCode port; | ||
525 | |||
526 | peer_ctx = get_peer_ctx (peer); | ||
527 | if (NULL == peer_ctx->send_channel) | ||
528 | { | ||
529 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
530 | "Trying to establish channel to peer %s\n", | ||
531 | GNUNET_i2s (peer)); | ||
532 | GNUNET_CRYPTO_hash (GNUNET_APPLICATION_PORT_RPS, | ||
533 | strlen (GNUNET_APPLICATION_PORT_RPS), | ||
534 | &port); | ||
535 | peer_ctx->send_channel = | ||
536 | GNUNET_CADET_channel_create (cadet_handle, | ||
537 | (struct GNUNET_PeerIdentity *) peer, /* context */ | ||
538 | peer, | ||
539 | &port, | ||
540 | GNUNET_CADET_OPTION_RELIABLE, | ||
541 | NULL, /* WindowSize handler */ | ||
542 | cleanup_destroyed_channel, /* Disconnect handler */ | ||
543 | cadet_handlers); | ||
544 | } | ||
545 | GNUNET_assert (NULL != peer_ctx->send_channel); | ||
546 | return peer_ctx->send_channel; | ||
547 | } | ||
548 | |||
549 | |||
550 | /** | ||
551 | * Get the message queue (#GNUNET_MQ_Handle) of a specific peer. | ||
552 | * | ||
553 | * If we already have a message queue open to this client, | ||
554 | * simply return it, otherways create one. | ||
555 | * | ||
556 | * @param peer the peer to get the mq to | ||
557 | * @return the #GNUNET_MQ_Handle | ||
558 | */ | ||
559 | static struct GNUNET_MQ_Handle * | ||
560 | get_mq (const struct GNUNET_PeerIdentity *peer) | ||
561 | { | ||
562 | struct PeerContext *peer_ctx; | ||
563 | |||
564 | peer_ctx = get_peer_ctx (peer); | ||
565 | |||
566 | if (NULL == peer_ctx->mq) | ||
567 | { | ||
568 | (void) get_channel (peer); | ||
569 | peer_ctx->mq = GNUNET_CADET_get_mq (peer_ctx->send_channel); | ||
570 | } | ||
571 | return peer_ctx->mq; | ||
572 | } | ||
573 | |||
574 | |||
575 | /** | ||
576 | * @brief This is called in response to the first message we sent as a | ||
577 | * liveliness check. | ||
578 | * | ||
579 | * @param cls #PeerContext of peer with pending liveliness check | ||
580 | */ | ||
581 | static void | ||
582 | mq_liveliness_check_successful (void *cls) | ||
583 | { | ||
584 | struct PeerContext *peer_ctx = cls; | ||
585 | |||
586 | if (NULL != peer_ctx->liveliness_check_pending) | ||
587 | { | ||
588 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
589 | "Liveliness check for peer %s was successfull\n", | ||
590 | GNUNET_i2s (&peer_ctx->peer_id)); | ||
591 | GNUNET_free (peer_ctx->liveliness_check_pending); | ||
592 | peer_ctx->liveliness_check_pending = NULL; | ||
593 | set_peer_live (peer_ctx); | ||
594 | } | ||
595 | } | ||
596 | |||
597 | /** | ||
598 | * Issue a check whether peer is live | ||
599 | * | ||
600 | * @param peer_ctx the context of the peer | ||
601 | */ | ||
602 | static void | ||
603 | check_peer_live (struct PeerContext *peer_ctx) | ||
604 | { | ||
605 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
606 | "Get informed about peer %s getting live\n", | ||
607 | GNUNET_i2s (&peer_ctx->peer_id)); | ||
608 | |||
609 | struct GNUNET_MQ_Handle *mq; | ||
610 | struct GNUNET_MQ_Envelope *ev; | ||
611 | |||
612 | ev = GNUNET_MQ_msg_header (GNUNET_MESSAGE_TYPE_RPS_PP_CHECK_LIVE); | ||
613 | peer_ctx->liveliness_check_pending = GNUNET_new (struct PendingMessage); | ||
614 | peer_ctx->liveliness_check_pending->ev = ev; | ||
615 | peer_ctx->liveliness_check_pending->peer_ctx = peer_ctx; | ||
616 | peer_ctx->liveliness_check_pending->type = "Check liveliness"; | ||
617 | mq = get_mq (&peer_ctx->peer_id); | ||
618 | GNUNET_MQ_notify_sent (ev, | ||
619 | mq_liveliness_check_successful, | ||
620 | peer_ctx); | ||
621 | GNUNET_MQ_send (mq, ev); | ||
622 | } | ||
623 | |||
624 | /** | ||
625 | * @brief Add an envelope to a message passed to mq to list of pending messages | ||
626 | * | ||
627 | * @param peer peer the message was sent to | ||
628 | * @param ev envelope to the message | ||
629 | * @param type type of the message to be sent | ||
630 | * @return pointer to pending message | ||
631 | */ | ||
632 | static struct PendingMessage * | ||
633 | insert_pending_message (const struct GNUNET_PeerIdentity *peer, | ||
634 | struct GNUNET_MQ_Envelope *ev, | ||
635 | const char *type) | ||
636 | { | ||
637 | struct PendingMessage *pending_msg; | ||
638 | struct PeerContext *peer_ctx; | ||
639 | |||
640 | peer_ctx = get_peer_ctx (peer); | ||
641 | pending_msg = GNUNET_new (struct PendingMessage); | ||
642 | pending_msg->ev = ev; | ||
643 | pending_msg->peer_ctx = peer_ctx; | ||
644 | pending_msg->type = type; | ||
645 | GNUNET_CONTAINER_DLL_insert (peer_ctx->pending_messages_head, | ||
646 | peer_ctx->pending_messages_tail, | ||
647 | pending_msg); | ||
648 | return pending_msg; | ||
649 | } | ||
650 | |||
651 | |||
652 | /** | ||
653 | * @brief Remove a pending message from the respective DLL | ||
654 | * | ||
655 | * @param pending_msg the pending message to remove | ||
656 | */ | ||
657 | static void | ||
658 | remove_pending_message (struct PendingMessage *pending_msg) | ||
659 | { | ||
660 | struct PeerContext *peer_ctx; | ||
661 | |||
662 | peer_ctx = pending_msg->peer_ctx; | ||
663 | GNUNET_CONTAINER_DLL_remove (peer_ctx->pending_messages_head, | ||
664 | peer_ctx->pending_messages_tail, | ||
665 | pending_msg); | ||
666 | GNUNET_MQ_send_cancel (peer_ctx->pending_messages_head->ev); | ||
667 | GNUNET_free (pending_msg); | ||
668 | } | ||
669 | |||
670 | |||
671 | /** | ||
672 | * @brief Check whether function of type #PeerOp was already scheduled | ||
673 | * | ||
674 | * The array with pending operations will probably never grow really big, so | ||
675 | * iterating over it should be ok. | ||
676 | * | ||
677 | * @param peer the peer to check | ||
678 | * @param peer_op the operation (#PeerOp) on the peer | ||
679 | * | ||
680 | * @return #GNUNET_YES if this operation is scheduled on that peer | ||
681 | * #GNUNET_NO otherwise | ||
682 | */ | ||
683 | static int | ||
684 | check_operation_scheduled (const struct GNUNET_PeerIdentity *peer, | ||
685 | const PeerOp peer_op) | ||
686 | { | ||
687 | const struct PeerContext *peer_ctx; | ||
688 | unsigned int i; | ||
689 | |||
690 | peer_ctx = get_peer_ctx (peer); | ||
691 | for (i = 0; i < peer_ctx->num_pending_ops; i++) | ||
692 | if (peer_op == peer_ctx->pending_ops[i].op) | ||
693 | return GNUNET_YES; | ||
694 | return GNUNET_NO; | ||
695 | } | ||
696 | |||
697 | |||
698 | /** | ||
699 | * Iterator over hash map entries. Deletes all contexts of peers. | ||
700 | * | ||
701 | * @param cls closure | ||
702 | * @param key current public key | ||
703 | * @param value value in the hash map | ||
704 | * @return #GNUNET_YES if we should continue to iterate, | ||
705 | * #GNUNET_NO if not. | ||
706 | */ | ||
707 | static int | ||
708 | peermap_clear_iterator (void *cls, | ||
709 | const struct GNUNET_PeerIdentity *key, | ||
710 | void *value) | ||
711 | { | ||
712 | Peers_remove_peer (key); | ||
713 | return GNUNET_YES; | ||
714 | } | ||
715 | |||
716 | |||
717 | /** | ||
718 | * @brief This is called once a message is sent. | ||
719 | * | ||
720 | * Removes the pending message | ||
721 | * | ||
722 | * @param cls type of the message that was sent | ||
723 | */ | ||
724 | static void | ||
725 | mq_notify_sent_cb (void *cls) | ||
726 | { | ||
727 | struct PendingMessage *pending_msg = (struct PendingMessage *) cls; | ||
728 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
729 | "%s was sent.\n", | ||
730 | pending_msg->type); | ||
731 | remove_pending_message (pending_msg); | ||
732 | } | ||
733 | |||
734 | |||
735 | /** | ||
736 | * @brief Iterator function for #store_valid_peers. | ||
737 | * | ||
738 | * Implements #GNUNET_CONTAINER_PeerMapIterator. | ||
739 | * Writes single peer to disk. | ||
740 | * | ||
741 | * @param cls the file handle to write to. | ||
742 | * @param peer current peer | ||
743 | * @param value unused | ||
744 | * | ||
745 | * @return #GNUNET_YES if we should continue to | ||
746 | * iterate, | ||
747 | * #GNUNET_NO if not. | ||
748 | */ | ||
749 | static int | ||
750 | store_peer_presistently_iterator (void *cls, | ||
751 | const struct GNUNET_PeerIdentity *peer, | ||
752 | void *value) | ||
753 | { | ||
754 | const struct GNUNET_DISK_FileHandle *fh = cls; | ||
755 | char peer_string[128]; | ||
756 | int size; | ||
757 | ssize_t ret; | ||
758 | |||
759 | if (NULL == peer) | ||
760 | { | ||
761 | return GNUNET_YES; | ||
762 | } | ||
763 | size = GNUNET_snprintf (peer_string, | ||
764 | sizeof (peer_string), | ||
765 | "%s\n", | ||
766 | GNUNET_i2s_full (peer)); | ||
767 | GNUNET_assert (53 == size); | ||
768 | ret = GNUNET_DISK_file_write (fh, | ||
769 | peer_string, | ||
770 | size); | ||
771 | GNUNET_assert (size == ret); | ||
772 | return GNUNET_YES; | ||
773 | } | ||
774 | |||
775 | |||
776 | /** | ||
777 | * @brief Store the peers currently in #valid_peers to disk. | ||
778 | */ | ||
779 | static void | ||
780 | store_valid_peers () | ||
781 | { | ||
782 | struct GNUNET_DISK_FileHandle *fh; | ||
783 | uint32_t number_written_peers; | ||
784 | int ret; | ||
785 | |||
786 | if (0 == strncmp ("DISABLE", filename_valid_peers, 7)) | ||
787 | { | ||
788 | return; | ||
789 | } | ||
790 | |||
791 | ret = GNUNET_DISK_directory_create_for_file (filename_valid_peers); | ||
792 | if (GNUNET_SYSERR == ret) | ||
793 | { | ||
794 | LOG (GNUNET_ERROR_TYPE_WARNING, | ||
795 | "Not able to create directory for file `%s'\n", | ||
796 | filename_valid_peers); | ||
797 | GNUNET_break (0); | ||
798 | } | ||
799 | else if (GNUNET_NO == ret) | ||
800 | { | ||
801 | LOG (GNUNET_ERROR_TYPE_WARNING, | ||
802 | "Directory for file `%s' exists but is not writable for us\n", | ||
803 | filename_valid_peers); | ||
804 | GNUNET_break (0); | ||
805 | } | ||
806 | fh = GNUNET_DISK_file_open (filename_valid_peers, | ||
807 | GNUNET_DISK_OPEN_WRITE | | ||
808 | GNUNET_DISK_OPEN_CREATE, | ||
809 | GNUNET_DISK_PERM_USER_READ | | ||
810 | GNUNET_DISK_PERM_USER_WRITE); | ||
811 | if (NULL == fh) | ||
812 | { | ||
813 | LOG (GNUNET_ERROR_TYPE_WARNING, | ||
814 | "Not able to write valid peers to file `%s'\n", | ||
815 | filename_valid_peers); | ||
816 | return; | ||
817 | } | ||
818 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
819 | "Writing %u valid peers to disk\n", | ||
820 | GNUNET_CONTAINER_multipeermap_size (valid_peers)); | ||
821 | number_written_peers = | ||
822 | GNUNET_CONTAINER_multipeermap_iterate (valid_peers, | ||
823 | store_peer_presistently_iterator, | ||
824 | fh); | ||
825 | GNUNET_assert (GNUNET_OK == GNUNET_DISK_file_close (fh)); | ||
826 | GNUNET_assert (number_written_peers == | ||
827 | GNUNET_CONTAINER_multipeermap_size (valid_peers)); | ||
828 | } | ||
829 | |||
830 | |||
831 | /** | ||
832 | * @brief Convert string representation of peer id to peer id. | ||
833 | * | ||
834 | * Counterpart to #GNUNET_i2s_full. | ||
835 | * | ||
836 | * @param string_repr The string representation of the peer id | ||
837 | * | ||
838 | * @return The peer id | ||
839 | */ | ||
840 | static const struct GNUNET_PeerIdentity * | ||
841 | s2i_full (const char *string_repr) | ||
842 | { | ||
843 | struct GNUNET_PeerIdentity *peer; | ||
844 | size_t len; | ||
845 | int ret; | ||
846 | |||
847 | peer = GNUNET_new (struct GNUNET_PeerIdentity); | ||
848 | len = strlen (string_repr); | ||
849 | if (52 > len) | ||
850 | { | ||
851 | LOG (GNUNET_ERROR_TYPE_WARNING, | ||
852 | "Not able to convert string representation of PeerID to PeerID\n" | ||
853 | "Sting representation: %s (len %u) - too short\n", | ||
854 | string_repr, | ||
855 | len); | ||
856 | GNUNET_break (0); | ||
857 | } | ||
858 | else if (52 < len) | ||
859 | { | ||
860 | len = 52; | ||
861 | } | ||
862 | ret = GNUNET_CRYPTO_eddsa_public_key_from_string (string_repr, | ||
863 | len, | ||
864 | &peer->public_key); | ||
865 | if (GNUNET_OK != ret) | ||
866 | { | ||
867 | LOG (GNUNET_ERROR_TYPE_WARNING, | ||
868 | "Not able to convert string representation of PeerID to PeerID\n" | ||
869 | "Sting representation: %s\n", | ||
870 | string_repr); | ||
871 | GNUNET_break (0); | ||
872 | } | ||
873 | return peer; | ||
874 | } | ||
875 | |||
876 | |||
877 | /** | ||
878 | * @brief Restore the peers on disk to #valid_peers. | ||
879 | */ | ||
880 | static void | ||
881 | restore_valid_peers () | ||
882 | { | ||
883 | off_t file_size; | ||
884 | uint32_t num_peers; | ||
885 | struct GNUNET_DISK_FileHandle *fh; | ||
886 | char *buf; | ||
887 | ssize_t size_read; | ||
888 | char *iter_buf; | ||
889 | char *str_repr; | ||
890 | const struct GNUNET_PeerIdentity *peer; | ||
891 | |||
892 | if (0 == strncmp ("DISABLE", filename_valid_peers, 7)) | ||
893 | { | ||
894 | return; | ||
895 | } | ||
896 | |||
897 | if (GNUNET_OK != GNUNET_DISK_file_test (filename_valid_peers)) | ||
898 | { | ||
899 | return; | ||
900 | } | ||
901 | fh = GNUNET_DISK_file_open (filename_valid_peers, | ||
902 | GNUNET_DISK_OPEN_READ, | ||
903 | GNUNET_DISK_PERM_NONE); | ||
904 | GNUNET_assert (NULL != fh); | ||
905 | GNUNET_assert (GNUNET_OK == GNUNET_DISK_file_handle_size (fh, &file_size)); | ||
906 | num_peers = file_size / 53; | ||
907 | buf = GNUNET_malloc (file_size); | ||
908 | size_read = GNUNET_DISK_file_read (fh, buf, file_size); | ||
909 | GNUNET_assert (size_read == file_size); | ||
910 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
911 | "Restoring %" PRIu32 " peers from file `%s'\n", | ||
912 | num_peers, | ||
913 | filename_valid_peers); | ||
914 | for (iter_buf = buf; iter_buf < buf + file_size - 1; iter_buf += 53) | ||
915 | { | ||
916 | str_repr = GNUNET_strndup (iter_buf, 53); | ||
917 | peer = s2i_full (str_repr); | ||
918 | GNUNET_free (str_repr); | ||
919 | add_valid_peer (peer); | ||
920 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
921 | "Restored valid peer %s from disk\n", | ||
922 | GNUNET_i2s_full (peer)); | ||
923 | } | ||
924 | iter_buf = NULL; | ||
925 | GNUNET_free (buf); | ||
926 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
927 | "num_peers: %" PRIu32 ", _size (valid_peers): %u\n", | ||
928 | num_peers, | ||
929 | GNUNET_CONTAINER_multipeermap_size (valid_peers)); | ||
930 | if (num_peers != GNUNET_CONTAINER_multipeermap_size (valid_peers)) | ||
931 | { | ||
932 | LOG (GNUNET_ERROR_TYPE_WARNING, | ||
933 | "Number of restored peers does not match file size. Have probably duplicates.\n"); | ||
934 | } | ||
935 | GNUNET_assert (GNUNET_OK == GNUNET_DISK_file_close (fh)); | ||
936 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
937 | "Restored %u valid peers from disk\n", | ||
938 | GNUNET_CONTAINER_multipeermap_size (valid_peers)); | ||
939 | } | ||
940 | |||
941 | |||
942 | /** | ||
943 | * @brief Initialise storage of peers | ||
944 | * | ||
945 | * @param fn_valid_peers filename of the file used to store valid peer ids | ||
946 | * @param cadet_h cadet handle | ||
947 | * @param disconnect_handler Disconnect handler | ||
948 | * @param c_handlers cadet handlers | ||
949 | * @param own_id own peer identity | ||
950 | */ | ||
951 | void | ||
952 | Peers_initialise (char* fn_valid_peers, | ||
953 | struct GNUNET_CADET_Handle *cadet_h, | ||
954 | GNUNET_CADET_DisconnectEventHandler disconnect_handler, | ||
955 | const struct GNUNET_MQ_MessageHandler *c_handlers, | ||
956 | const struct GNUNET_PeerIdentity *own_id) | ||
957 | { | ||
958 | filename_valid_peers = GNUNET_strdup (fn_valid_peers); | ||
959 | cadet_handle = cadet_h; | ||
960 | cleanup_destroyed_channel = disconnect_handler; | ||
961 | cadet_handlers = c_handlers; | ||
962 | own_identity = own_id; | ||
963 | peer_map = GNUNET_CONTAINER_multipeermap_create (4, GNUNET_NO); | ||
964 | valid_peers = GNUNET_CONTAINER_multipeermap_create (4, GNUNET_NO); | ||
965 | restore_valid_peers (); | ||
966 | } | ||
967 | |||
968 | |||
969 | /** | ||
970 | * @brief Delete storage of peers that was created with #Peers_initialise () | ||
971 | */ | ||
972 | void | ||
973 | Peers_terminate () | ||
974 | { | ||
975 | if (GNUNET_SYSERR == | ||
976 | GNUNET_CONTAINER_multipeermap_iterate (peer_map, | ||
977 | peermap_clear_iterator, | ||
978 | NULL)) | ||
979 | { | ||
980 | LOG (GNUNET_ERROR_TYPE_WARNING, | ||
981 | "Iteration destroying peers was aborted.\n"); | ||
982 | } | ||
983 | GNUNET_CONTAINER_multipeermap_destroy (peer_map); | ||
984 | store_valid_peers (); | ||
985 | GNUNET_free (filename_valid_peers); | ||
986 | GNUNET_CONTAINER_multipeermap_destroy (valid_peers); | ||
987 | } | ||
988 | |||
989 | |||
990 | /** | ||
991 | * Iterator over #valid_peers hash map entries. | ||
992 | * | ||
993 | * @param cls closure - unused | ||
994 | * @param peer current peer id | ||
995 | * @param value value in the hash map - unused | ||
996 | * @return #GNUNET_YES if we should continue to | ||
997 | * iterate, | ||
998 | * #GNUNET_NO if not. | ||
999 | */ | ||
1000 | static int | ||
1001 | valid_peer_iterator (void *cls, | ||
1002 | const struct GNUNET_PeerIdentity *peer, | ||
1003 | void *value) | ||
1004 | { | ||
1005 | struct PeersIteratorCls *it_cls = cls; | ||
1006 | |||
1007 | return it_cls->iterator (it_cls->cls, | ||
1008 | peer); | ||
1009 | } | ||
1010 | |||
1011 | |||
1012 | /** | ||
1013 | * @brief Get all currently known, valid peer ids. | ||
1014 | * | ||
1015 | * @param it function to call on each peer id | ||
1016 | * @param it_cls extra argument to @a it | ||
1017 | * @return the number of key value pairs processed, | ||
1018 | * #GNUNET_SYSERR if it aborted iteration | ||
1019 | */ | ||
1020 | int | ||
1021 | Peers_get_valid_peers (PeersIterator iterator, | ||
1022 | void *it_cls) | ||
1023 | { | ||
1024 | struct PeersIteratorCls *cls; | ||
1025 | int ret; | ||
1026 | |||
1027 | cls = GNUNET_new (struct PeersIteratorCls); | ||
1028 | cls->iterator = iterator; | ||
1029 | cls->cls = it_cls; | ||
1030 | ret = GNUNET_CONTAINER_multipeermap_iterate (valid_peers, | ||
1031 | valid_peer_iterator, | ||
1032 | cls); | ||
1033 | GNUNET_free (cls); | ||
1034 | return ret; | ||
1035 | } | ||
1036 | |||
1037 | |||
1038 | /** | ||
1039 | * @brief Add peer to known peers. | ||
1040 | * | ||
1041 | * This function is called on new peer_ids from 'external' sources | ||
1042 | * (client seed, cadet get_peers(), ...) | ||
1043 | * | ||
1044 | * @param peer the new #GNUNET_PeerIdentity | ||
1045 | * | ||
1046 | * @return #GNUNET_YES if peer was inserted | ||
1047 | * #GNUNET_NO otherwise (if peer was already known or | ||
1048 | * peer was #own_identity) | ||
1049 | */ | ||
1050 | int | ||
1051 | Peers_insert_peer (const struct GNUNET_PeerIdentity *peer) | ||
1052 | { | ||
1053 | if ( (GNUNET_YES == Peers_check_peer_known (peer)) || | ||
1054 | (0 == GNUNET_CRYPTO_cmp_peer_identity (peer, own_identity)) ) | ||
1055 | { | ||
1056 | return GNUNET_NO; /* We already know this peer - nothing to do */ | ||
1057 | } | ||
1058 | (void) create_peer_ctx (peer); | ||
1059 | return GNUNET_YES; | ||
1060 | } | ||
1061 | |||
1062 | |||
1063 | /** | ||
1064 | * @brief Try connecting to a peer to see whether it is online | ||
1065 | * | ||
1066 | * If not known yet, insert into known peers | ||
1067 | * | ||
1068 | * @param peer the peer whose liveliness is to be checked | ||
1069 | * @return #GNUNET_YES if peer had to be inserted | ||
1070 | * #GNUNET_NO otherwise (if peer was already known or | ||
1071 | * peer was #own_identity) | ||
1072 | */ | ||
1073 | int | ||
1074 | Peers_issue_peer_liveliness_check (const struct GNUNET_PeerIdentity *peer) | ||
1075 | { | ||
1076 | struct PeerContext *peer_ctx; | ||
1077 | int ret; | ||
1078 | |||
1079 | if (0 == GNUNET_CRYPTO_cmp_peer_identity (peer, own_identity)) | ||
1080 | { | ||
1081 | return GNUNET_NO; | ||
1082 | } | ||
1083 | ret = Peers_insert_peer (peer); | ||
1084 | peer_ctx = get_peer_ctx (peer); | ||
1085 | if (GNUNET_NO == Peers_check_peer_flag (peer, Peers_ONLINE)) | ||
1086 | { | ||
1087 | check_peer_live (peer_ctx); | ||
1088 | } | ||
1089 | return ret; | ||
1090 | } | ||
1091 | |||
1092 | |||
1093 | /** | ||
1094 | * @brief Check if peer is removable. | ||
1095 | * | ||
1096 | * Check if | ||
1097 | * - a recv channel exists | ||
1098 | * - there are pending messages | ||
1099 | * - there is no pending pull reply | ||
1100 | * | ||
1101 | * @param peer the peer in question | ||
1102 | * @return #GNUNET_YES if peer is removable | ||
1103 | * #GNUNET_NO if peer is NOT removable | ||
1104 | * #GNUNET_SYSERR if peer is not known | ||
1105 | */ | ||
1106 | int | ||
1107 | Peers_check_removable (const struct GNUNET_PeerIdentity *peer) | ||
1108 | { | ||
1109 | struct PeerContext *peer_ctx; | ||
1110 | |||
1111 | if (GNUNET_NO == GNUNET_CONTAINER_multipeermap_contains (peer_map, peer)) | ||
1112 | { | ||
1113 | return GNUNET_SYSERR; | ||
1114 | } | ||
1115 | |||
1116 | peer_ctx = get_peer_ctx (peer); | ||
1117 | if ( (NULL != peer_ctx->recv_channel) || | ||
1118 | (NULL != peer_ctx->pending_messages_head) || | ||
1119 | (GNUNET_NO == check_peer_flag_set (peer_ctx, Peers_PULL_REPLY_PENDING)) ) | ||
1120 | { | ||
1121 | return GNUNET_NO; | ||
1122 | } | ||
1123 | return GNUNET_YES; | ||
1124 | } | ||
1125 | |||
1126 | |||
1127 | /** | ||
1128 | * @brief Remove peer | ||
1129 | * | ||
1130 | * @param peer the peer to clean | ||
1131 | * @return #GNUNET_YES if peer was removed | ||
1132 | * #GNUNET_NO otherwise | ||
1133 | */ | ||
1134 | int | ||
1135 | Peers_remove_peer (const struct GNUNET_PeerIdentity *peer) | ||
1136 | { | ||
1137 | struct PeerContext *peer_ctx; | ||
1138 | |||
1139 | if (GNUNET_NO == GNUNET_CONTAINER_multipeermap_contains (peer_map, peer)) | ||
1140 | { | ||
1141 | return GNUNET_NO; | ||
1142 | } | ||
1143 | |||
1144 | peer_ctx = get_peer_ctx (peer); | ||
1145 | set_peer_flag (peer_ctx, Peers_TO_DESTROY); | ||
1146 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
1147 | "Going to remove peer %s\n", | ||
1148 | GNUNET_i2s (&peer_ctx->peer_id)); | ||
1149 | Peers_unset_peer_flag (peer, Peers_ONLINE); | ||
1150 | |||
1151 | GNUNET_array_grow (peer_ctx->pending_ops, peer_ctx->num_pending_ops, 0); | ||
1152 | while (NULL != peer_ctx->pending_messages_head) | ||
1153 | { | ||
1154 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
1155 | "Removing unsent %s\n", | ||
1156 | peer_ctx->pending_messages_head->type); | ||
1157 | remove_pending_message (peer_ctx->pending_messages_head); | ||
1158 | } | ||
1159 | /* If we are still waiting for notification whether this peer is live | ||
1160 | * cancel the according task */ | ||
1161 | if (NULL != peer_ctx->liveliness_check_pending) | ||
1162 | { | ||
1163 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1164 | "Removing pending liveliness check for peer %s\n", | ||
1165 | GNUNET_i2s (&peer_ctx->peer_id)); | ||
1166 | // TODO wait until cadet sets mq->cancel_impl | ||
1167 | //GNUNET_MQ_send_cancel (peer_ctx->liveliness_check_pending->ev); | ||
1168 | GNUNET_free (peer_ctx->liveliness_check_pending); | ||
1169 | peer_ctx->liveliness_check_pending = NULL; | ||
1170 | } | ||
1171 | if (NULL != peer_ctx->send_channel) | ||
1172 | { | ||
1173 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
1174 | "Destroying send channel\n"); | ||
1175 | GNUNET_CADET_channel_destroy (peer_ctx->send_channel); | ||
1176 | peer_ctx->send_channel = NULL; | ||
1177 | } | ||
1178 | if (NULL != peer_ctx->recv_channel) | ||
1179 | { | ||
1180 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
1181 | "Destroying recv channel\n"); | ||
1182 | GNUNET_CADET_channel_destroy (peer_ctx->recv_channel); | ||
1183 | peer_ctx->recv_channel = NULL; | ||
1184 | } | ||
1185 | if (NULL != peer_ctx->mq) | ||
1186 | { | ||
1187 | GNUNET_MQ_destroy (peer_ctx->mq); | ||
1188 | peer_ctx->mq = NULL; | ||
1189 | } | ||
1190 | |||
1191 | GNUNET_free (peer_ctx->send_channel_flags); | ||
1192 | GNUNET_free (peer_ctx->recv_channel_flags); | ||
1193 | |||
1194 | if (GNUNET_YES != GNUNET_CONTAINER_multipeermap_remove_all (peer_map, &peer_ctx->peer_id)) | ||
1195 | { | ||
1196 | LOG (GNUNET_ERROR_TYPE_WARNING, "removing peer from peer_map failed\n"); | ||
1197 | } | ||
1198 | GNUNET_free (peer_ctx); | ||
1199 | return GNUNET_YES; | ||
1200 | } | ||
1201 | |||
1202 | |||
1203 | /** | ||
1204 | * @brief set flags on a given peer. | ||
1205 | * | ||
1206 | * @param peer the peer to set flags on | ||
1207 | * @param flags the flags | ||
1208 | */ | ||
1209 | void | ||
1210 | Peers_set_peer_flag (const struct GNUNET_PeerIdentity *peer, enum Peers_PeerFlags flags) | ||
1211 | { | ||
1212 | struct PeerContext *peer_ctx; | ||
1213 | |||
1214 | peer_ctx = get_peer_ctx (peer); | ||
1215 | set_peer_flag (peer_ctx, flags); | ||
1216 | } | ||
1217 | |||
1218 | |||
1219 | /** | ||
1220 | * @brief unset flags on a given peer. | ||
1221 | * | ||
1222 | * @param peer the peer to unset flags on | ||
1223 | * @param flags the flags | ||
1224 | */ | ||
1225 | void | ||
1226 | Peers_unset_peer_flag (const struct GNUNET_PeerIdentity *peer, enum Peers_PeerFlags flags) | ||
1227 | { | ||
1228 | struct PeerContext *peer_ctx; | ||
1229 | |||
1230 | peer_ctx = get_peer_ctx (peer); | ||
1231 | unset_peer_flag (peer_ctx, flags); | ||
1232 | } | ||
1233 | |||
1234 | |||
1235 | /** | ||
1236 | * @brief Check whether flags on a peer are set. | ||
1237 | * | ||
1238 | * @param peer the peer to check the flag of | ||
1239 | * @param flags the flags to check | ||
1240 | * | ||
1241 | * @return #GNUNET_SYSERR if peer is not known | ||
1242 | * #GNUNET_YES if all given flags are set | ||
1243 | * #GNUNET_NO otherwise | ||
1244 | */ | ||
1245 | int | ||
1246 | Peers_check_peer_flag (const struct GNUNET_PeerIdentity *peer, enum Peers_PeerFlags flags) | ||
1247 | { | ||
1248 | struct PeerContext *peer_ctx; | ||
1249 | |||
1250 | if (GNUNET_NO == Peers_check_peer_known (peer)) | ||
1251 | { | ||
1252 | return GNUNET_SYSERR; | ||
1253 | } | ||
1254 | peer_ctx = get_peer_ctx (peer); | ||
1255 | return check_peer_flag_set (peer_ctx, flags); | ||
1256 | } | ||
1257 | |||
1258 | |||
1259 | /** | ||
1260 | * @brief set flags on a given channel. | ||
1261 | * | ||
1262 | * @param channel the channel to set flags on | ||
1263 | * @param flags the flags | ||
1264 | */ | ||
1265 | void | ||
1266 | Peers_set_channel_flag (uint32_t *channel_flags, enum Peers_ChannelFlags flags) | ||
1267 | { | ||
1268 | set_channel_flag (channel_flags, flags); | ||
1269 | } | ||
1270 | |||
1271 | |||
1272 | /** | ||
1273 | * @brief unset flags on a given channel. | ||
1274 | * | ||
1275 | * @param channel the channel to unset flags on | ||
1276 | * @param flags the flags | ||
1277 | */ | ||
1278 | void | ||
1279 | Peers_unset_channel_flag (uint32_t *channel_flags, enum Peers_ChannelFlags flags) | ||
1280 | { | ||
1281 | unset_channel_flag (channel_flags, flags); | ||
1282 | } | ||
1283 | |||
1284 | |||
1285 | /** | ||
1286 | * @brief Check whether flags on a channel are set. | ||
1287 | * | ||
1288 | * @param channel the channel to check the flag of | ||
1289 | * @param flags the flags to check | ||
1290 | * | ||
1291 | * @return #GNUNET_YES if all given flags are set | ||
1292 | * #GNUNET_NO otherwise | ||
1293 | */ | ||
1294 | int | ||
1295 | Peers_check_channel_flag (uint32_t *channel_flags, enum Peers_ChannelFlags flags) | ||
1296 | { | ||
1297 | return check_channel_flag_set (channel_flags, flags); | ||
1298 | } | ||
1299 | |||
1300 | /** | ||
1301 | * @brief Get the flags for the channel in @a role for @a peer. | ||
1302 | * | ||
1303 | * @param peer Peer to get the channel flags for. | ||
1304 | * @param role Role of channel to get flags for | ||
1305 | * | ||
1306 | * @return The flags. | ||
1307 | */ | ||
1308 | uint32_t * | ||
1309 | Peers_get_channel_flag (const struct GNUNET_PeerIdentity *peer, | ||
1310 | enum Peers_ChannelRole role) | ||
1311 | { | ||
1312 | const struct PeerContext *peer_ctx; | ||
1313 | |||
1314 | peer_ctx = get_peer_ctx (peer); | ||
1315 | if (Peers_CHANNEL_ROLE_SENDING == role) | ||
1316 | { | ||
1317 | return peer_ctx->send_channel_flags; | ||
1318 | } | ||
1319 | else if (Peers_CHANNEL_ROLE_RECEIVING == role) | ||
1320 | { | ||
1321 | return peer_ctx->recv_channel_flags; | ||
1322 | } | ||
1323 | else | ||
1324 | { | ||
1325 | GNUNET_assert (0); | ||
1326 | } | ||
1327 | } | ||
1328 | |||
1329 | /** | ||
1330 | * @brief Check whether we have information about the given peer. | ||
1331 | * | ||
1332 | * FIXME probably deprecated. Make this the new _online. | ||
1333 | * | ||
1334 | * @param peer peer in question | ||
1335 | * | ||
1336 | * @return #GNUNET_YES if peer is known | ||
1337 | * #GNUNET_NO if peer is not knwon | ||
1338 | */ | ||
1339 | int | ||
1340 | Peers_check_peer_known (const struct GNUNET_PeerIdentity *peer) | ||
1341 | { | ||
1342 | return GNUNET_CONTAINER_multipeermap_contains (peer_map, peer); | ||
1343 | } | ||
1344 | |||
1345 | |||
1346 | /** | ||
1347 | * @brief Check whether @a peer is actually a peer. | ||
1348 | * | ||
1349 | * A valid peer is a peer that we know exists eg. we were connected to once. | ||
1350 | * | ||
1351 | * @param peer peer in question | ||
1352 | * | ||
1353 | * @return #GNUNET_YES if peer is valid | ||
1354 | * #GNUNET_NO if peer is not valid | ||
1355 | */ | ||
1356 | int | ||
1357 | Peers_check_peer_valid (const struct GNUNET_PeerIdentity *peer) | ||
1358 | { | ||
1359 | return GNUNET_CONTAINER_multipeermap_contains (valid_peers, peer); | ||
1360 | } | ||
1361 | |||
1362 | |||
1363 | /** | ||
1364 | * @brief Indicate that we want to send to the other peer | ||
1365 | * | ||
1366 | * This establishes a sending channel | ||
1367 | * | ||
1368 | * @param peer the peer to establish channel to | ||
1369 | */ | ||
1370 | void | ||
1371 | Peers_indicate_sending_intention (const struct GNUNET_PeerIdentity *peer) | ||
1372 | { | ||
1373 | GNUNET_assert (GNUNET_YES == Peers_check_peer_known (peer)); | ||
1374 | (void) get_channel (peer); | ||
1375 | } | ||
1376 | |||
1377 | |||
1378 | /** | ||
1379 | * @brief Check whether other peer has the intention to send/opened channel | ||
1380 | * towars us | ||
1381 | * | ||
1382 | * @param peer the peer in question | ||
1383 | * | ||
1384 | * @return #GNUNET_YES if peer has the intention to send | ||
1385 | * #GNUNET_NO otherwise | ||
1386 | */ | ||
1387 | int | ||
1388 | Peers_check_peer_send_intention (const struct GNUNET_PeerIdentity *peer) | ||
1389 | { | ||
1390 | const struct PeerContext *peer_ctx; | ||
1391 | |||
1392 | peer_ctx = get_peer_ctx (peer); | ||
1393 | if (NULL != peer_ctx->recv_channel) | ||
1394 | { | ||
1395 | return GNUNET_YES; | ||
1396 | } | ||
1397 | return GNUNET_NO; | ||
1398 | } | ||
1399 | |||
1400 | |||
1401 | /** | ||
1402 | * Handle the channel a peer opens to us. | ||
1403 | * | ||
1404 | * @param cls The closure | ||
1405 | * @param channel The channel the peer wants to establish | ||
1406 | * @param initiator The peer's peer ID | ||
1407 | * | ||
1408 | * @return initial channel context for the channel | ||
1409 | * (can be NULL -- that's not an error) | ||
1410 | */ | ||
1411 | void * | ||
1412 | Peers_handle_inbound_channel (void *cls, | ||
1413 | struct GNUNET_CADET_Channel *channel, | ||
1414 | const struct GNUNET_PeerIdentity *initiator) | ||
1415 | { | ||
1416 | struct PeerContext *peer_ctx; | ||
1417 | |||
1418 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
1419 | "New channel was established to us (Peer %s).\n", | ||
1420 | GNUNET_i2s (initiator)); | ||
1421 | GNUNET_assert (NULL != channel); /* according to cadet API */ | ||
1422 | /* Make sure we 'know' about this peer */ | ||
1423 | peer_ctx = create_or_get_peer_ctx (initiator); | ||
1424 | set_peer_live (peer_ctx); | ||
1425 | /* We only accept one incoming channel per peer */ | ||
1426 | if (GNUNET_YES == Peers_check_peer_send_intention (initiator)) | ||
1427 | { | ||
1428 | set_channel_flag (peer_ctx->recv_channel_flags, | ||
1429 | Peers_CHANNEL_ESTABLISHED_TWICE); | ||
1430 | GNUNET_CADET_channel_destroy (channel); | ||
1431 | /* return the channel context */ | ||
1432 | return &peer_ctx->peer_id; | ||
1433 | } | ||
1434 | peer_ctx->recv_channel = channel; | ||
1435 | return &peer_ctx->peer_id; | ||
1436 | } | ||
1437 | |||
1438 | |||
1439 | /** | ||
1440 | * @brief Check whether a sending channel towards the given peer exists | ||
1441 | * | ||
1442 | * @param peer the peer to check for | ||
1443 | * | ||
1444 | * @return #GNUNET_YES if a sending channel towards that peer exists | ||
1445 | * #GNUNET_NO otherwise | ||
1446 | */ | ||
1447 | int | ||
1448 | Peers_check_sending_channel_exists (const struct GNUNET_PeerIdentity *peer) | ||
1449 | { | ||
1450 | struct PeerContext *peer_ctx; | ||
1451 | |||
1452 | if (GNUNET_NO == Peers_check_peer_known (peer)) | ||
1453 | { /* If no such peer exists, there is no channel */ | ||
1454 | return GNUNET_NO; | ||
1455 | } | ||
1456 | peer_ctx = get_peer_ctx (peer); | ||
1457 | if (NULL == peer_ctx->send_channel) | ||
1458 | { | ||
1459 | return GNUNET_NO; | ||
1460 | } | ||
1461 | return GNUNET_YES; | ||
1462 | } | ||
1463 | |||
1464 | |||
1465 | /** | ||
1466 | * @brief check whether the given channel is the sending channel of the given | ||
1467 | * peer | ||
1468 | * | ||
1469 | * @param peer the peer in question | ||
1470 | * @param channel the channel to check for | ||
1471 | * @param role either #Peers_CHANNEL_ROLE_SENDING, or | ||
1472 | * #Peers_CHANNEL_ROLE_RECEIVING | ||
1473 | * | ||
1474 | * @return #GNUNET_YES if the given chennel is the sending channel of the peer | ||
1475 | * #GNUNET_NO otherwise | ||
1476 | */ | ||
1477 | int | ||
1478 | Peers_check_channel_role (const struct GNUNET_PeerIdentity *peer, | ||
1479 | const struct GNUNET_CADET_Channel *channel, | ||
1480 | enum Peers_ChannelRole role) | ||
1481 | { | ||
1482 | const struct PeerContext *peer_ctx; | ||
1483 | |||
1484 | if (GNUNET_NO == Peers_check_peer_known (peer)) | ||
1485 | { | ||
1486 | return GNUNET_NO; | ||
1487 | } | ||
1488 | peer_ctx = get_peer_ctx (peer); | ||
1489 | if ( (Peers_CHANNEL_ROLE_SENDING == role) && | ||
1490 | (channel == peer_ctx->send_channel) ) | ||
1491 | { | ||
1492 | return GNUNET_YES; | ||
1493 | } | ||
1494 | if ( (Peers_CHANNEL_ROLE_RECEIVING == role) && | ||
1495 | (channel == peer_ctx->recv_channel) ) | ||
1496 | { | ||
1497 | return GNUNET_YES; | ||
1498 | } | ||
1499 | return GNUNET_NO; | ||
1500 | } | ||
1501 | |||
1502 | |||
1503 | /** | ||
1504 | * @brief Destroy the send channel of a peer e.g. stop indicating a sending | ||
1505 | * intention to another peer | ||
1506 | * | ||
1507 | * If there is also no channel to receive messages from that peer, remove it | ||
1508 | * from the peermap. | ||
1509 | * TODO really? | ||
1510 | * | ||
1511 | * @peer the peer identity of the peer whose sending channel to destroy | ||
1512 | * @return #GNUNET_YES if channel was destroyed | ||
1513 | * #GNUNET_NO otherwise | ||
1514 | */ | ||
1515 | int | ||
1516 | Peers_destroy_sending_channel (const struct GNUNET_PeerIdentity *peer) | ||
1517 | { | ||
1518 | struct PeerContext *peer_ctx; | ||
1519 | |||
1520 | if (GNUNET_NO == Peers_check_peer_known (peer)) | ||
1521 | { | ||
1522 | return GNUNET_NO; | ||
1523 | } | ||
1524 | peer_ctx = get_peer_ctx (peer); | ||
1525 | if (NULL != peer_ctx->send_channel) | ||
1526 | { | ||
1527 | set_channel_flag (peer_ctx->send_channel_flags, Peers_CHANNEL_CLEAN); | ||
1528 | GNUNET_CADET_channel_destroy (peer_ctx->send_channel); | ||
1529 | peer_ctx->send_channel = NULL; | ||
1530 | (void) Peers_check_connected (peer); | ||
1531 | return GNUNET_YES; | ||
1532 | } | ||
1533 | return GNUNET_NO; | ||
1534 | } | ||
1535 | |||
1536 | /** | ||
1537 | * This is called when a channel is destroyed. | ||
1538 | * | ||
1539 | * @param cls The closure | ||
1540 | * @param channel The channel being closed | ||
1541 | * @param channel_ctx The context associated with this channel | ||
1542 | */ | ||
1543 | void | ||
1544 | Peers_cleanup_destroyed_channel (void *cls, | ||
1545 | const struct GNUNET_CADET_Channel *channel) | ||
1546 | { | ||
1547 | struct GNUNET_PeerIdentity *peer = cls; | ||
1548 | struct PeerContext *peer_ctx; | ||
1549 | |||
1550 | if (GNUNET_NO == Peers_check_peer_known (peer)) | ||
1551 | {/* We don't want to implicitly create a context that we're about to kill */ | ||
1552 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
1553 | "channel (%s) without associated context was destroyed\n", | ||
1554 | GNUNET_i2s (peer)); | ||
1555 | return; | ||
1556 | } | ||
1557 | peer_ctx = get_peer_ctx (peer); | ||
1558 | |||
1559 | /* If our peer issued the destruction of the channel, the #Peers_TO_DESTROY | ||
1560 | * flag will be set. In this case simply make sure that the channels are | ||
1561 | * cleaned. */ | ||
1562 | /* FIXME This distinction seems to be redundant */ | ||
1563 | if (Peers_check_peer_flag (peer, Peers_TO_DESTROY)) | ||
1564 | {/* We initiatad the destruction of this particular peer */ | ||
1565 | if (channel == peer_ctx->send_channel) | ||
1566 | peer_ctx->send_channel = NULL; | ||
1567 | else if (channel == peer_ctx->recv_channel) | ||
1568 | peer_ctx->recv_channel = NULL; | ||
1569 | |||
1570 | if (NULL != peer_ctx->send_channel) | ||
1571 | { | ||
1572 | GNUNET_CADET_channel_destroy (peer_ctx->send_channel); | ||
1573 | peer_ctx->send_channel = NULL; | ||
1574 | } | ||
1575 | if (NULL != peer_ctx->recv_channel) | ||
1576 | { | ||
1577 | GNUNET_CADET_channel_destroy (peer_ctx->recv_channel); | ||
1578 | peer_ctx->recv_channel = NULL; | ||
1579 | } | ||
1580 | /* Set the #Peers_ONLINE flag accordingly */ | ||
1581 | (void) Peers_check_connected (peer); | ||
1582 | return; | ||
1583 | } | ||
1584 | |||
1585 | else | ||
1586 | { /* We did not initiate the destruction of this peer */ | ||
1587 | if (channel == peer_ctx->send_channel) | ||
1588 | { /* Something (but us) killd the channel - clean up peer */ | ||
1589 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
1590 | "send channel (%s) was destroyed - cleaning up\n", | ||
1591 | GNUNET_i2s (peer)); | ||
1592 | peer_ctx->send_channel = NULL; | ||
1593 | } | ||
1594 | else if (channel == peer_ctx->recv_channel) | ||
1595 | { /* Other peer doesn't want to send us messages anymore */ | ||
1596 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
1597 | "Peer %s destroyed recv channel - cleaning up channel\n", | ||
1598 | GNUNET_i2s (peer)); | ||
1599 | peer_ctx->recv_channel = NULL; | ||
1600 | } | ||
1601 | else | ||
1602 | { | ||
1603 | LOG (GNUNET_ERROR_TYPE_WARNING, | ||
1604 | "unknown channel (%s) was destroyed\n", | ||
1605 | GNUNET_i2s (peer)); | ||
1606 | } | ||
1607 | } | ||
1608 | (void) Peers_check_connected (peer); | ||
1609 | } | ||
1610 | |||
1611 | /** | ||
1612 | * @brief Send a message to another peer. | ||
1613 | * | ||
1614 | * Keeps track about pending messages so they can be properly removed when the | ||
1615 | * peer is destroyed. | ||
1616 | * | ||
1617 | * @param peer receeiver of the message | ||
1618 | * @param ev envelope of the message | ||
1619 | * @param type type of the message | ||
1620 | */ | ||
1621 | void | ||
1622 | Peers_send_message (const struct GNUNET_PeerIdentity *peer, | ||
1623 | struct GNUNET_MQ_Envelope *ev, | ||
1624 | const char *type) | ||
1625 | { | ||
1626 | struct PendingMessage *pending_msg; | ||
1627 | struct GNUNET_MQ_Handle *mq; | ||
1628 | |||
1629 | pending_msg = insert_pending_message (peer, ev, type); | ||
1630 | mq = get_mq (peer); | ||
1631 | GNUNET_MQ_notify_sent (ev, | ||
1632 | mq_notify_sent_cb, | ||
1633 | pending_msg); | ||
1634 | GNUNET_MQ_send (mq, ev); | ||
1635 | } | ||
1636 | |||
1637 | /** | ||
1638 | * @brief Schedule a operation on given peer | ||
1639 | * | ||
1640 | * Avoids scheduling an operation twice. | ||
1641 | * | ||
1642 | * @param peer the peer we want to schedule the operation for once it gets live | ||
1643 | * | ||
1644 | * @return #GNUNET_YES if the operation was scheduled | ||
1645 | * #GNUNET_NO otherwise | ||
1646 | */ | ||
1647 | int | ||
1648 | Peers_schedule_operation (const struct GNUNET_PeerIdentity *peer, | ||
1649 | const PeerOp peer_op) | ||
1650 | { | ||
1651 | struct PeerPendingOp pending_op; | ||
1652 | struct PeerContext *peer_ctx; | ||
1653 | |||
1654 | if (0 == GNUNET_CRYPTO_cmp_peer_identity (peer, own_identity)) | ||
1655 | { | ||
1656 | return GNUNET_NO; | ||
1657 | } | ||
1658 | GNUNET_assert (GNUNET_YES == Peers_check_peer_known (peer)); | ||
1659 | |||
1660 | //TODO if LIVE/ONLINE execute immediately | ||
1661 | |||
1662 | if (GNUNET_NO == check_operation_scheduled (peer, peer_op)) | ||
1663 | { | ||
1664 | peer_ctx = get_peer_ctx (peer); | ||
1665 | pending_op.op = peer_op; | ||
1666 | pending_op.op_cls = NULL; | ||
1667 | GNUNET_array_append (peer_ctx->pending_ops, | ||
1668 | peer_ctx->num_pending_ops, | ||
1669 | pending_op); | ||
1670 | return GNUNET_YES; | ||
1671 | } | ||
1672 | return GNUNET_NO; | ||
1673 | } | ||
1674 | |||
1675 | /** | ||
1676 | * @brief Get the recv_channel of @a peer. | ||
1677 | * Needed to correctly handle (call #GNUNET_CADET_receive_done()) incoming | ||
1678 | * messages. | ||
1679 | * | ||
1680 | * @param peer The peer to get the recv_channel from. | ||
1681 | * | ||
1682 | * @return The recv_channel. | ||
1683 | */ | ||
1684 | struct GNUNET_CADET_Channel * | ||
1685 | Peers_get_recv_channel (const struct GNUNET_PeerIdentity *peer) | ||
1686 | { | ||
1687 | struct PeerContext *peer_ctx; | ||
1688 | |||
1689 | GNUNET_assert (GNUNET_YES == Peers_check_peer_known (peer)); | ||
1690 | peer_ctx = get_peer_ctx (peer); | ||
1691 | return peer_ctx->recv_channel; | ||
1692 | } | ||
1693 | |||
1694 | /* end of gnunet-service-rps_peers.c */ | ||
diff --git a/src/rps/gnunet-service-rps_peers.h b/src/rps/gnunet-service-rps_peers.h deleted file mode 100644 index 15970a7ce..000000000 --- a/src/rps/gnunet-service-rps_peers.h +++ /dev/null | |||
@@ -1,437 +0,0 @@ | |||
1 | /* | ||
2 | This file is part of GNUnet. | ||
3 | Copyright (C) | ||
4 | |||
5 | GNUnet is free software; you can redistribute it and/or modify | ||
6 | it under the terms of the GNU General Public License as published | ||
7 | by the Free Software Foundation; either version 3, or (at your | ||
8 | option) any later version. | ||
9 | |||
10 | GNUnet is distributed in the hope that it will be useful, but | ||
11 | WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
13 | General Public License for more details. | ||
14 | |||
15 | You should have received a copy of the GNU General Public License | ||
16 | along with GNUnet; see the file COPYING. If not, write to the | ||
17 | Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | ||
18 | Boston, MA 02110-1301, USA. | ||
19 | */ | ||
20 | |||
21 | /** | ||
22 | * @file rps/gnunet-service-rps_peers.h | ||
23 | * @brief utilities for managing (information about) peers | ||
24 | * @author Julius Bünger | ||
25 | */ | ||
26 | #include "gnunet_util_lib.h" | ||
27 | #include <inttypes.h> | ||
28 | #include "gnunet_cadet_service.h" | ||
29 | |||
30 | |||
31 | /** | ||
32 | * Different flags indicating the status of another peer. | ||
33 | */ | ||
34 | enum Peers_PeerFlags | ||
35 | { | ||
36 | /** | ||
37 | * If we are waiting for a reply from that peer (sent a pull request). | ||
38 | */ | ||
39 | Peers_PULL_REPLY_PENDING = 0x01, | ||
40 | |||
41 | /* IN_OTHER_GOSSIP_LIST = 0x02, unneeded? */ | ||
42 | /* IN_OWN_SAMPLER_LIST = 0x04, unneeded? */ | ||
43 | /* IN_OWN_GOSSIP_LIST = 0x08, unneeded? */ | ||
44 | |||
45 | /** | ||
46 | * We set this bit when we know the peer is online. | ||
47 | */ | ||
48 | Peers_ONLINE = 0x20, | ||
49 | |||
50 | /** | ||
51 | * We set this bit when we are going to destroy the channel to this peer. | ||
52 | * When cleanup_channel is called, we know that we wanted to destroy it. | ||
53 | * Otherwise the channel to the other peer was destroyed. | ||
54 | */ | ||
55 | Peers_TO_DESTROY = 0x40, | ||
56 | }; | ||
57 | |||
58 | /** | ||
59 | * Keep track of the status of a channel. | ||
60 | * | ||
61 | * This is needed in order to know what to do with a channel when it's | ||
62 | * destroyed. | ||
63 | */ | ||
64 | enum Peers_ChannelFlags | ||
65 | { | ||
66 | /** | ||
67 | * We destroyed the channel because the other peer established a second one. | ||
68 | */ | ||
69 | Peers_CHANNEL_ESTABLISHED_TWICE = 0x1, | ||
70 | |||
71 | /** | ||
72 | * The channel was removed because it was not needed any more. This should be | ||
73 | * the sending channel. | ||
74 | */ | ||
75 | Peers_CHANNEL_CLEAN = 0x2, | ||
76 | }; | ||
77 | |||
78 | /** | ||
79 | * @brief The role of a channel. Sending or receiving. | ||
80 | */ | ||
81 | enum Peers_ChannelRole | ||
82 | { | ||
83 | /** | ||
84 | * Channel is used for sending | ||
85 | */ | ||
86 | Peers_CHANNEL_ROLE_SENDING = 0x01, | ||
87 | |||
88 | /** | ||
89 | * Channel is used for receiving | ||
90 | */ | ||
91 | Peers_CHANNEL_ROLE_RECEIVING = 0x02, | ||
92 | }; | ||
93 | |||
94 | /** | ||
95 | * @brief Functions of this type can be used to be stored at a peer for later execution. | ||
96 | * | ||
97 | * @param cls closure | ||
98 | * @param peer peer to execute function on | ||
99 | */ | ||
100 | typedef void (* PeerOp) (void *cls, const struct GNUNET_PeerIdentity *peer); | ||
101 | |||
102 | /** | ||
103 | * @brief Iterator over valid peers. | ||
104 | * | ||
105 | * @param cls closure | ||
106 | * @param peer current public peer id | ||
107 | * @return #GNUNET_YES if we should continue to | ||
108 | * iterate, | ||
109 | * #GNUNET_NO if not. | ||
110 | */ | ||
111 | typedef int | ||
112 | (*PeersIterator) (void *cls, | ||
113 | const struct GNUNET_PeerIdentity *peer); | ||
114 | |||
115 | /** | ||
116 | * @brief Initialise storage of peers | ||
117 | * | ||
118 | * @param fn_valid_peers filename of the file used to store valid peer ids | ||
119 | * @param cadet_h cadet handle | ||
120 | * @param disconnect_handler Disconnect handler | ||
121 | * @param c_handlers cadet handlers | ||
122 | * @param own_id own peer identity | ||
123 | */ | ||
124 | void | ||
125 | Peers_initialise (char* fn_valid_peers, | ||
126 | struct GNUNET_CADET_Handle *cadet_h, | ||
127 | GNUNET_CADET_DisconnectEventHandler disconnect_handler, | ||
128 | const struct GNUNET_MQ_MessageHandler *c_handlers, | ||
129 | const struct GNUNET_PeerIdentity *own_id); | ||
130 | |||
131 | /** | ||
132 | * @brief Delete storage of peers that was created with #Peers_initialise () | ||
133 | */ | ||
134 | void | ||
135 | Peers_terminate (); | ||
136 | |||
137 | |||
138 | /** | ||
139 | * @brief Get all currently known, valid peer ids. | ||
140 | * | ||
141 | * @param it function to call on each peer id | ||
142 | * @param it_cls extra argument to @a it | ||
143 | * @return the number of key value pairs processed, | ||
144 | * #GNUNET_SYSERR if it aborted iteration | ||
145 | */ | ||
146 | int | ||
147 | Peers_get_valid_peers (PeersIterator iterator, | ||
148 | void *it_cls); | ||
149 | |||
150 | /** | ||
151 | * @brief Add peer to known peers. | ||
152 | * | ||
153 | * This function is called on new peer_ids from 'external' sources | ||
154 | * (client seed, cadet get_peers(), ...) | ||
155 | * | ||
156 | * @param peer the new #GNUNET_PeerIdentity | ||
157 | * | ||
158 | * @return #GNUNET_YES if peer was inserted | ||
159 | * #GNUNET_NO otherwise (if peer was already known or | ||
160 | * peer was #own_identity) | ||
161 | */ | ||
162 | int | ||
163 | Peers_insert_peer (const struct GNUNET_PeerIdentity *peer); | ||
164 | |||
165 | /** | ||
166 | * @brief Try connecting to a peer to see whether it is online | ||
167 | * | ||
168 | * If not known yet, insert into known peers | ||
169 | * | ||
170 | * @param peer the peer whose liveliness is to be checked | ||
171 | * @return #GNUNET_YES if peer had to be inserted | ||
172 | * #GNUNET_NO otherwise (if peer was already known or | ||
173 | * peer was #own_identity) | ||
174 | */ | ||
175 | int | ||
176 | Peers_issue_peer_liveliness_check (const struct GNUNET_PeerIdentity *peer); | ||
177 | |||
178 | /** | ||
179 | * @brief Check if peer is removable. | ||
180 | * | ||
181 | * Check if | ||
182 | * - a recv channel exists | ||
183 | * - there are pending messages | ||
184 | * - there is no pending pull reply | ||
185 | * | ||
186 | * @param peer the peer in question | ||
187 | * @return #GNUNET_YES if peer is removable | ||
188 | * #GNUNET_NO if peer is NOT removable | ||
189 | * #GNUNET_SYSERR if peer is not known | ||
190 | */ | ||
191 | int | ||
192 | Peers_check_removable (const struct GNUNET_PeerIdentity *peer); | ||
193 | |||
194 | /** | ||
195 | * @brief Remove peer | ||
196 | * | ||
197 | * @param peer the peer to clean | ||
198 | * @return #GNUNET_YES if peer was removed | ||
199 | * #GNUNET_NO otherwise | ||
200 | */ | ||
201 | int | ||
202 | Peers_remove_peer (const struct GNUNET_PeerIdentity *peer); | ||
203 | |||
204 | /** | ||
205 | * @brief set flags on a given peer. | ||
206 | * | ||
207 | * @param peer the peer to set flags on | ||
208 | * @param flags the flags | ||
209 | */ | ||
210 | void | ||
211 | Peers_set_peer_flag (const struct GNUNET_PeerIdentity *peer, enum Peers_PeerFlags flags); | ||
212 | |||
213 | /** | ||
214 | * @brief unset flags on a given peer. | ||
215 | * | ||
216 | * @param peer the peer to unset flags on | ||
217 | * @param flags the flags | ||
218 | */ | ||
219 | void | ||
220 | Peers_unset_peer_flag (const struct GNUNET_PeerIdentity *peer, enum Peers_PeerFlags flags); | ||
221 | |||
222 | /** | ||
223 | * @brief Check whether flags on a peer are set. | ||
224 | * | ||
225 | * @param peer the peer to check the flag of | ||
226 | * @param flags the flags to check | ||
227 | * | ||
228 | * @return #GNUNET_YES if all given flags are set | ||
229 | * ##GNUNET_NO otherwise | ||
230 | */ | ||
231 | int | ||
232 | Peers_check_peer_flag (const struct GNUNET_PeerIdentity *peer, enum Peers_PeerFlags flags); | ||
233 | |||
234 | |||
235 | /** | ||
236 | * @brief set flags on a given channel. | ||
237 | * | ||
238 | * @param channel the channel to set flags on | ||
239 | * @param flags the flags | ||
240 | */ | ||
241 | void | ||
242 | Peers_set_channel_flag (uint32_t *channel_flags, enum Peers_ChannelFlags flags); | ||
243 | |||
244 | /** | ||
245 | * @brief unset flags on a given channel. | ||
246 | * | ||
247 | * @param channel the channel to unset flags on | ||
248 | * @param flags the flags | ||
249 | */ | ||
250 | void | ||
251 | Peers_unset_channel_flag (uint32_t *channel_flags, enum Peers_ChannelFlags flags); | ||
252 | |||
253 | /** | ||
254 | * @brief Check whether flags on a channel are set. | ||
255 | * | ||
256 | * @param channel the channel to check the flag of | ||
257 | * @param flags the flags to check | ||
258 | * | ||
259 | * @return #GNUNET_YES if all given flags are set | ||
260 | * #GNUNET_NO otherwise | ||
261 | */ | ||
262 | int | ||
263 | Peers_check_channel_flag (uint32_t *channel_flags, enum Peers_ChannelFlags flags); | ||
264 | |||
265 | /** | ||
266 | * @brief Get the flags for the channel in @a role for @a peer. | ||
267 | * | ||
268 | * @param peer Peer to get the channel flags for. | ||
269 | * @param role Role of channel to get flags for | ||
270 | * | ||
271 | * @return The flags. | ||
272 | */ | ||
273 | uint32_t * | ||
274 | Peers_get_channel_flag (const struct GNUNET_PeerIdentity *peer, | ||
275 | enum Peers_ChannelRole role); | ||
276 | |||
277 | /** | ||
278 | * @brief Check whether we have information about the given peer. | ||
279 | * | ||
280 | * FIXME probably deprecated. Make this the new _online. | ||
281 | * | ||
282 | * @param peer peer in question | ||
283 | * | ||
284 | * @return #GNUNET_YES if peer is known | ||
285 | * #GNUNET_NO if peer is not knwon | ||
286 | */ | ||
287 | int | ||
288 | Peers_check_peer_known (const struct GNUNET_PeerIdentity *peer); | ||
289 | |||
290 | /** | ||
291 | * @brief Check whether @a peer is actually a peer. | ||
292 | * | ||
293 | * A valid peer is a peer that we know exists eg. we were connected to once. | ||
294 | * | ||
295 | * @param peer peer in question | ||
296 | * | ||
297 | * @return #GNUNET_YES if peer is valid | ||
298 | * #GNUNET_NO if peer is not valid | ||
299 | */ | ||
300 | int | ||
301 | Peers_check_peer_valid (const struct GNUNET_PeerIdentity *peer); | ||
302 | |||
303 | /** | ||
304 | * @brief Indicate that we want to send to the other peer | ||
305 | * | ||
306 | * This establishes a sending channel | ||
307 | * | ||
308 | * @param peer the peer to establish channel to | ||
309 | */ | ||
310 | void | ||
311 | Peers_indicate_sending_intention (const struct GNUNET_PeerIdentity *peer); | ||
312 | |||
313 | /** | ||
314 | * @brief Check whether other peer has the intention to send/opened channel | ||
315 | * towars us | ||
316 | * | ||
317 | * @param peer the peer in question | ||
318 | * | ||
319 | * @return #GNUNET_YES if peer has the intention to send | ||
320 | * #GNUNET_NO otherwise | ||
321 | */ | ||
322 | int | ||
323 | Peers_check_peer_send_intention (const struct GNUNET_PeerIdentity *peer); | ||
324 | |||
325 | /** | ||
326 | * Handle the channel a peer opens to us. | ||
327 | * | ||
328 | * @param cls The closure | ||
329 | * @param channel The channel the peer wants to establish | ||
330 | * @param initiator The peer's peer ID | ||
331 | * | ||
332 | * @return initial channel context for the channel | ||
333 | * (can be NULL -- that's not an error) | ||
334 | */ | ||
335 | void * | ||
336 | Peers_handle_inbound_channel (void *cls, | ||
337 | struct GNUNET_CADET_Channel *channel, | ||
338 | const struct GNUNET_PeerIdentity *initiator); | ||
339 | |||
340 | /** | ||
341 | * @brief Check whether a sending channel towards the given peer exists | ||
342 | * | ||
343 | * @param peer the peer to check for | ||
344 | * | ||
345 | * @return #GNUNET_YES if a sending channel towards that peer exists | ||
346 | * #GNUNET_NO otherwise | ||
347 | */ | ||
348 | int | ||
349 | Peers_check_sending_channel_exists (const struct GNUNET_PeerIdentity *peer); | ||
350 | |||
351 | /** | ||
352 | * @brief check whether the given channel is the sending channel of the given | ||
353 | * peer | ||
354 | * | ||
355 | * @param peer the peer in question | ||
356 | * @param channel the channel to check for | ||
357 | * @param role either #Peers_CHANNEL_ROLE_SENDING, or | ||
358 | * #Peers_CHANNEL_ROLE_RECEIVING | ||
359 | * | ||
360 | * @return #GNUNET_YES if the given chennel is the sending channel of the peer | ||
361 | * #GNUNET_NO otherwise | ||
362 | */ | ||
363 | int | ||
364 | Peers_check_channel_role (const struct GNUNET_PeerIdentity *peer, | ||
365 | const struct GNUNET_CADET_Channel *channel, | ||
366 | enum Peers_ChannelRole role); | ||
367 | |||
368 | /** | ||
369 | * @brief Destroy the send channel of a peer e.g. stop indicating a sending | ||
370 | * intention to another peer | ||
371 | * | ||
372 | * If there is also no channel to receive messages from that peer, remove it | ||
373 | * from the peermap. | ||
374 | * | ||
375 | * @peer the peer identity of the peer whose sending channel to destroy | ||
376 | * @return #GNUNET_YES if channel was destroyed | ||
377 | * #GNUNET_NO otherwise | ||
378 | */ | ||
379 | int | ||
380 | Peers_destroy_sending_channel (const struct GNUNET_PeerIdentity *peer); | ||
381 | |||
382 | /** | ||
383 | * This is called when a channel is destroyed. | ||
384 | * | ||
385 | * Removes peer completely from our knowledge if the send_channel was destroyed | ||
386 | * Otherwise simply delete the recv_channel | ||
387 | * | ||
388 | * @param cls The closure | ||
389 | * @param channel The channel being closed | ||
390 | * @param channel_ctx The context associated with this channel | ||
391 | */ | ||
392 | void | ||
393 | Peers_cleanup_destroyed_channel (void *cls, | ||
394 | const struct GNUNET_CADET_Channel *channel); | ||
395 | |||
396 | /** | ||
397 | * @brief Send a message to another peer. | ||
398 | * | ||
399 | * Keeps track about pending messages so they can be properly removed when the | ||
400 | * peer is destroyed. | ||
401 | * | ||
402 | * @param peer receeiver of the message | ||
403 | * @param ev envelope of the message | ||
404 | * @param type type of the message | ||
405 | */ | ||
406 | void | ||
407 | Peers_send_message (const struct GNUNET_PeerIdentity *peer, | ||
408 | struct GNUNET_MQ_Envelope *ev, | ||
409 | const char *type); | ||
410 | |||
411 | /** | ||
412 | * @brief Schedule a operation on given peer | ||
413 | * | ||
414 | * Avoids scheduling an operation twice. | ||
415 | * | ||
416 | * @param peer the peer we want to schedule the operation for once it gets live | ||
417 | * | ||
418 | * @return #GNUNET_YES if the operation was scheduled | ||
419 | * #GNUNET_NO otherwise | ||
420 | */ | ||
421 | int | ||
422 | Peers_schedule_operation (const struct GNUNET_PeerIdentity *peer, | ||
423 | const PeerOp peer_op); | ||
424 | |||
425 | /** | ||
426 | * @brief Get the recv_channel of @a peer. | ||
427 | * Needed to correctly handle (call #GNUNET_CADET_receive_done()) incoming | ||
428 | * messages. | ||
429 | * | ||
430 | * @param peer The peer to get the recv_channel from. | ||
431 | * | ||
432 | * @return The recv_channel. | ||
433 | */ | ||
434 | struct GNUNET_CADET_Channel * | ||
435 | Peers_get_recv_channel (const struct GNUNET_PeerIdentity *peer); | ||
436 | |||
437 | /* end of gnunet-service-rps_peers.h */ | ||
diff --git a/src/rps/rps.h b/src/rps/rps.h index 3037e2190..f5cc2e8d1 100644 --- a/src/rps/rps.h +++ b/src/rps/rps.h | |||
@@ -175,4 +175,100 @@ struct GNUNET_RPS_CS_ActMaliciousMessage | |||
175 | }; | 175 | }; |
176 | #endif /* ENABLE_MALICIOUS */ | 176 | #endif /* ENABLE_MALICIOUS */ |
177 | 177 | ||
178 | |||
179 | /*********************************************************************** | ||
180 | * Defines from old gnunet-service-rps_peers.h | ||
181 | ***********************************************************************/ | ||
182 | |||
183 | /** | ||
184 | * Different flags indicating the status of another peer. | ||
185 | */ | ||
186 | enum Peers_PeerFlags | ||
187 | { | ||
188 | /** | ||
189 | * If we are waiting for a reply from that peer (sent a pull request). | ||
190 | */ | ||
191 | Peers_PULL_REPLY_PENDING = 0x01, | ||
192 | |||
193 | /* IN_OTHER_GOSSIP_LIST = 0x02, unneeded? */ | ||
194 | /* IN_OWN_SAMPLER_LIST = 0x04, unneeded? */ | ||
195 | /* IN_OWN_GOSSIP_LIST = 0x08, unneeded? */ | ||
196 | |||
197 | /** | ||
198 | * We set this bit when we know the peer is online. | ||
199 | */ | ||
200 | Peers_ONLINE = 0x20, | ||
201 | |||
202 | /** | ||
203 | * We set this bit when we are going to destroy the channel to this peer. | ||
204 | * When cleanup_channel is called, we know that we wanted to destroy it. | ||
205 | * Otherwise the channel to the other peer was destroyed. | ||
206 | */ | ||
207 | Peers_TO_DESTROY = 0x40, | ||
208 | }; | ||
209 | |||
210 | /** | ||
211 | * Keep track of the status of a channel. | ||
212 | * | ||
213 | * This is needed in order to know what to do with a channel when it's | ||
214 | * destroyed. | ||
215 | */ | ||
216 | enum Peers_ChannelFlags | ||
217 | { | ||
218 | /** | ||
219 | * We destroyed the channel because the other peer established a second one. | ||
220 | */ | ||
221 | Peers_CHANNEL_ESTABLISHED_TWICE = 0x1, | ||
222 | |||
223 | /** | ||
224 | * The channel was removed because it was not needed any more. This should be | ||
225 | * the sending channel. | ||
226 | */ | ||
227 | Peers_CHANNEL_CLEAN = 0x2, | ||
228 | |||
229 | /** | ||
230 | * We destroyed the channel because the other peer established a second one. | ||
231 | */ | ||
232 | Peers_CHANNEL_DESTROING = 0x4, | ||
233 | }; | ||
234 | |||
235 | |||
236 | /** | ||
237 | * @brief The role of a channel. Sending or receiving. | ||
238 | */ | ||
239 | enum Peers_ChannelRole | ||
240 | { | ||
241 | /** | ||
242 | * Channel is used for sending | ||
243 | */ | ||
244 | Peers_CHANNEL_ROLE_SENDING = 0x01, | ||
245 | |||
246 | /** | ||
247 | * Channel is used for receiving | ||
248 | */ | ||
249 | Peers_CHANNEL_ROLE_RECEIVING = 0x02, | ||
250 | }; | ||
251 | |||
252 | /** | ||
253 | * @brief Functions of this type can be used to be stored at a peer for later execution. | ||
254 | * | ||
255 | * @param cls closure | ||
256 | * @param peer peer to execute function on | ||
257 | */ | ||
258 | typedef void (* PeerOp) (void *cls, const struct GNUNET_PeerIdentity *peer); | ||
259 | |||
260 | /** | ||
261 | * @brief Iterator over valid peers. | ||
262 | * | ||
263 | * @param cls closure | ||
264 | * @param peer current public peer id | ||
265 | * @return #GNUNET_YES if we should continue to | ||
266 | * iterate, | ||
267 | * #GNUNET_NO if not. | ||
268 | */ | ||
269 | typedef int | ||
270 | (*PeersIterator) (void *cls, | ||
271 | const struct GNUNET_PeerIdentity *peer); | ||
272 | |||
273 | |||
178 | GNUNET_NETWORK_STRUCT_END | 274 | GNUNET_NETWORK_STRUCT_END |
diff --git a/src/rps/test_rps.c b/src/rps/test_rps.c index acd3a165d..0114a19fe 100644 --- a/src/rps/test_rps.c +++ b/src/rps/test_rps.c | |||
@@ -18,7 +18,7 @@ | |||
18 | Boston, MA 02110-1301, USA. | 18 | Boston, MA 02110-1301, USA. |
19 | */ | 19 | */ |
20 | /** | 20 | /** |
21 | * @file rps/test_rps_multipeer.c | 21 | * @file rps/test_rps.c |
22 | * @brief Testcase for the random peer sampling service. Starts | 22 | * @brief Testcase for the random peer sampling service. Starts |
23 | * a peergroup with a given number of peers, then waits to | 23 | * a peergroup with a given number of peers, then waits to |
24 | * receive size pushes/pulls from each peer. Expects to wait | 24 | * receive size pushes/pulls from each peer. Expects to wait |
@@ -344,6 +344,11 @@ struct SingleTestRun | |||
344 | * Number of Requests to make. | 344 | * Number of Requests to make. |
345 | */ | 345 | */ |
346 | uint32_t num_requests; | 346 | uint32_t num_requests; |
347 | |||
348 | /** | ||
349 | * Run with churn | ||
350 | */ | ||
351 | int have_churn; | ||
347 | } cur_test_run; | 352 | } cur_test_run; |
348 | 353 | ||
349 | /** | 354 | /** |
@@ -1023,6 +1028,33 @@ req_cancel_cb (struct RPSPeer *rps_peer) | |||
1023 | } | 1028 | } |
1024 | 1029 | ||
1025 | /*********************************** | 1030 | /*********************************** |
1031 | * CHURN | ||
1032 | ***********************************/ | ||
1033 | |||
1034 | static void | ||
1035 | churn (void *cls); | ||
1036 | |||
1037 | static void | ||
1038 | churn_test_cb (struct RPSPeer *rps_peer) | ||
1039 | { | ||
1040 | /* Start churn */ | ||
1041 | if (GNUNET_YES == cur_test_run.have_churn && NULL == churn_task) | ||
1042 | { | ||
1043 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1044 | "Starting churn task\n"); | ||
1045 | churn_task = GNUNET_SCHEDULER_add_delayed ( | ||
1046 | GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 5), | ||
1047 | churn, | ||
1048 | NULL); | ||
1049 | } else { | ||
1050 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1051 | "Not starting churn task\n"); | ||
1052 | } | ||
1053 | |||
1054 | schedule_missing_requests (rps_peer); | ||
1055 | } | ||
1056 | |||
1057 | /*********************************** | ||
1026 | * PROFILER | 1058 | * PROFILER |
1027 | ***********************************/ | 1059 | ***********************************/ |
1028 | 1060 | ||
@@ -1148,6 +1180,9 @@ churn (void *cls) | |||
1148 | double portion_go_online; | 1180 | double portion_go_online; |
1149 | double portion_go_offline; | 1181 | double portion_go_offline; |
1150 | 1182 | ||
1183 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1184 | "Churn function executing\n"); | ||
1185 | |||
1151 | /* Compute the probability for an online peer to go offline | 1186 | /* Compute the probability for an online peer to go offline |
1152 | * this round */ | 1187 | * this round */ |
1153 | portion_online = num_peers_online * 1.0 / num_peers; | 1188 | portion_online = num_peers_online * 1.0 / num_peers; |
@@ -1256,12 +1291,17 @@ static void | |||
1256 | profiler_cb (struct RPSPeer *rps_peer) | 1291 | profiler_cb (struct RPSPeer *rps_peer) |
1257 | { | 1292 | { |
1258 | /* Start churn */ | 1293 | /* Start churn */ |
1259 | if (NULL == churn_task) | 1294 | if (GNUNET_YES == cur_test_run.have_churn && NULL == churn_task) |
1260 | { | 1295 | { |
1296 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1297 | "Starting churn task\n"); | ||
1261 | churn_task = GNUNET_SCHEDULER_add_delayed ( | 1298 | churn_task = GNUNET_SCHEDULER_add_delayed ( |
1262 | GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 5), | 1299 | GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 5), |
1263 | churn, | 1300 | churn, |
1264 | NULL); | 1301 | NULL); |
1302 | } else { | ||
1303 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1304 | "Not starting churn task\n"); | ||
1265 | } | 1305 | } |
1266 | 1306 | ||
1267 | /* Only request peer ids at one peer. | 1307 | /* Only request peer ids at one peer. |
@@ -1353,6 +1393,24 @@ run (void *cls, | |||
1353 | struct OpListEntry *entry; | 1393 | struct OpListEntry *entry; |
1354 | uint32_t num_mal_peers; | 1394 | uint32_t num_mal_peers; |
1355 | 1395 | ||
1396 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "RUN was called\n"); | ||
1397 | |||
1398 | /* Check whether we timed out */ | ||
1399 | if (n_peers != num_peers || | ||
1400 | NULL == peers || | ||
1401 | 0 == links_succeeded) | ||
1402 | { | ||
1403 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Going down due to args (eg. timeout)\n"); | ||
1404 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "\tn_peers: %u\n", n_peers); | ||
1405 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "\tnum_peers: %" PRIu32 "\n", num_peers); | ||
1406 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "\tpeers: %p\n", peers); | ||
1407 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "\tlinks_succeeded: %u\n", links_succeeded); | ||
1408 | GNUNET_SCHEDULER_shutdown (); | ||
1409 | return; | ||
1410 | } | ||
1411 | |||
1412 | |||
1413 | /* Initialize peers */ | ||
1356 | testbed_peers = peers; | 1414 | testbed_peers = peers; |
1357 | num_peers_online = 0; | 1415 | num_peers_online = 0; |
1358 | for (i = 0; i < num_peers; i++) | 1416 | for (i = 0; i < num_peers; i++) |
@@ -1412,6 +1470,7 @@ main (int argc, char *argv[]) | |||
1412 | cur_test_run.pre_test = NULL; | 1470 | cur_test_run.pre_test = NULL; |
1413 | cur_test_run.reply_handle = default_reply_handle; | 1471 | cur_test_run.reply_handle = default_reply_handle; |
1414 | cur_test_run.eval_cb = default_eval_cb; | 1472 | cur_test_run.eval_cb = default_eval_cb; |
1473 | cur_test_run.have_churn = GNUNET_YES; | ||
1415 | churn_task = NULL; | 1474 | churn_task = NULL; |
1416 | timeout = GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 30); | 1475 | timeout = GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 30); |
1417 | 1476 | ||
@@ -1446,6 +1505,7 @@ main (int argc, char *argv[]) | |||
1446 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Test single request\n"); | 1505 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Test single request\n"); |
1447 | cur_test_run.name = "test-rps-single-req"; | 1506 | cur_test_run.name = "test-rps-single-req"; |
1448 | cur_test_run.main_test = single_req_cb; | 1507 | cur_test_run.main_test = single_req_cb; |
1508 | cur_test_run.have_churn = GNUNET_NO; | ||
1449 | } | 1509 | } |
1450 | 1510 | ||
1451 | else if (strstr (argv[0], "_delayed_reqs") != NULL) | 1511 | else if (strstr (argv[0], "_delayed_reqs") != NULL) |
@@ -1453,6 +1513,7 @@ main (int argc, char *argv[]) | |||
1453 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Test delayed requests\n"); | 1513 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Test delayed requests\n"); |
1454 | cur_test_run.name = "test-rps-delayed-reqs"; | 1514 | cur_test_run.name = "test-rps-delayed-reqs"; |
1455 | cur_test_run.main_test = delay_req_cb; | 1515 | cur_test_run.main_test = delay_req_cb; |
1516 | cur_test_run.have_churn = GNUNET_NO; | ||
1456 | } | 1517 | } |
1457 | 1518 | ||
1458 | else if (strstr (argv[0], "_seed_big") != NULL) | 1519 | else if (strstr (argv[0], "_seed_big") != NULL) |
@@ -1462,6 +1523,7 @@ main (int argc, char *argv[]) | |||
1462 | cur_test_run.name = "test-rps-seed-big"; | 1523 | cur_test_run.name = "test-rps-seed-big"; |
1463 | cur_test_run.main_test = seed_big_cb; | 1524 | cur_test_run.main_test = seed_big_cb; |
1464 | cur_test_run.eval_cb = no_eval; | 1525 | cur_test_run.eval_cb = no_eval; |
1526 | cur_test_run.have_churn = GNUNET_NO; | ||
1465 | timeout = GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 10); | 1527 | timeout = GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 10); |
1466 | } | 1528 | } |
1467 | 1529 | ||
@@ -1470,6 +1532,7 @@ main (int argc, char *argv[]) | |||
1470 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Test seeding and requesting on a single peer\n"); | 1532 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Test seeding and requesting on a single peer\n"); |
1471 | cur_test_run.name = "test-rps-single-peer-seed"; | 1533 | cur_test_run.name = "test-rps-single-peer-seed"; |
1472 | cur_test_run.main_test = single_peer_seed_cb; | 1534 | cur_test_run.main_test = single_peer_seed_cb; |
1535 | cur_test_run.have_churn = GNUNET_NO; | ||
1473 | } | 1536 | } |
1474 | 1537 | ||
1475 | else if (strstr (argv[0], "_seed_request") != NULL) | 1538 | else if (strstr (argv[0], "_seed_request") != NULL) |
@@ -1477,6 +1540,7 @@ main (int argc, char *argv[]) | |||
1477 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Test seeding and requesting on multiple peers\n"); | 1540 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Test seeding and requesting on multiple peers\n"); |
1478 | cur_test_run.name = "test-rps-seed-request"; | 1541 | cur_test_run.name = "test-rps-seed-request"; |
1479 | cur_test_run.main_test = seed_req_cb; | 1542 | cur_test_run.main_test = seed_req_cb; |
1543 | cur_test_run.have_churn = GNUNET_NO; | ||
1480 | } | 1544 | } |
1481 | 1545 | ||
1482 | else if (strstr (argv[0], "_seed") != NULL) | 1546 | else if (strstr (argv[0], "_seed") != NULL) |
@@ -1485,6 +1549,7 @@ main (int argc, char *argv[]) | |||
1485 | cur_test_run.name = "test-rps-seed"; | 1549 | cur_test_run.name = "test-rps-seed"; |
1486 | cur_test_run.main_test = seed_cb; | 1550 | cur_test_run.main_test = seed_cb; |
1487 | cur_test_run.eval_cb = no_eval; | 1551 | cur_test_run.eval_cb = no_eval; |
1552 | cur_test_run.have_churn = GNUNET_NO; | ||
1488 | } | 1553 | } |
1489 | 1554 | ||
1490 | else if (strstr (argv[0], "_req_cancel") != NULL) | 1555 | else if (strstr (argv[0], "_req_cancel") != NULL) |
@@ -1494,6 +1559,20 @@ main (int argc, char *argv[]) | |||
1494 | num_peers = 1; | 1559 | num_peers = 1; |
1495 | cur_test_run.main_test = req_cancel_cb; | 1560 | cur_test_run.main_test = req_cancel_cb; |
1496 | cur_test_run.eval_cb = no_eval; | 1561 | cur_test_run.eval_cb = no_eval; |
1562 | cur_test_run.have_churn = GNUNET_NO; | ||
1563 | timeout = GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 10); | ||
1564 | } | ||
1565 | |||
1566 | else if (strstr (argv[0], "_churn") != NULL) | ||
1567 | { | ||
1568 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Test churn\n"); | ||
1569 | cur_test_run.name = "test-rps-churn"; | ||
1570 | num_peers = 5; | ||
1571 | cur_test_run.init_peer = default_init_peer; | ||
1572 | cur_test_run.main_test = churn_test_cb; | ||
1573 | cur_test_run.reply_handle = default_reply_handle; | ||
1574 | cur_test_run.eval_cb = default_eval_cb; | ||
1575 | cur_test_run.have_churn = GNUNET_YES; | ||
1497 | timeout = GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 10); | 1576 | timeout = GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 10); |
1498 | } | 1577 | } |
1499 | 1578 | ||
@@ -1510,6 +1589,7 @@ main (int argc, char *argv[]) | |||
1510 | cur_test_run.eval_cb = profiler_eval; | 1589 | cur_test_run.eval_cb = profiler_eval; |
1511 | cur_test_run.request_interval = 2; | 1590 | cur_test_run.request_interval = 2; |
1512 | cur_test_run.num_requests = 5; | 1591 | cur_test_run.num_requests = 5; |
1592 | cur_test_run.have_churn = GNUNET_YES; | ||
1513 | timeout = GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 90); | 1593 | timeout = GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 90); |
1514 | 1594 | ||
1515 | /* 'Clean' directory */ | 1595 | /* 'Clean' directory */ |
@@ -1542,4 +1622,4 @@ main (int argc, char *argv[]) | |||
1542 | return ret_value; | 1622 | return ret_value; |
1543 | } | 1623 | } |
1544 | 1624 | ||
1545 | /* end of test_rps_multipeer.c */ | 1625 | /* end of test_rps.c */ |
diff --git a/src/rps/test_rps.conf b/src/rps/test_rps.conf index 7da91ccf0..fce07c945 100644 --- a/src/rps/test_rps.conf +++ b/src/rps/test_rps.conf | |||
@@ -24,16 +24,16 @@ INITSIZE = 4 | |||
24 | [testbed] | 24 | [testbed] |
25 | HOSTNAME = localhost | 25 | HOSTNAME = localhost |
26 | 26 | ||
27 | OPERATION_TIMEOUT = 60 s | 27 | # OPERATION_TIMEOUT = 60 s |
28 | 28 | ||
29 | MAX_PARALLEL_TOPOLOGY_CONFIG_OPERATIONS = 1 | 29 | # MAX_PARALLEL_TOPOLOGY_CONFIG_OPERATIONS = 100 |
30 | #OVERLAY_TOPOLOGY = CLIQUE | 30 | OVERLAY_TOPOLOGY = CLIQUE |
31 | OVERLAY_TOPOLOGY = SMALL_WORLD | 31 | #OVERLAY_TOPOLOGY = SMALL_WORLD |
32 | #SCALE_FREE_TOPOLOGY_CAP = | 32 | #SCALE_FREE_TOPOLOGY_CAP = |
33 | 33 | ||
34 | OVERLAY_RANDOM_LINKS = 25 | 34 | # OVERLAY_RANDOM_LINKS = 25 |
35 | 35 | ||
36 | SETUP_TIMEOUT = 2 m | 36 | # SETUP_TIMEOUT = 2 m |
37 | 37 | ||
38 | [nse] | 38 | [nse] |
39 | WORKBITS = 0 | 39 | WORKBITS = 0 |
@@ -46,7 +46,27 @@ USE_LOCALADDR = YES | |||
46 | RETURN_LOCAL_ADDRESSES = YES | 46 | RETURN_LOCAL_ADDRESSES = YES |
47 | 47 | ||
48 | [transport] | 48 | [transport] |
49 | PLUGINS = unix | 49 | PLUGINS = udp |
50 | |||
51 | [ats] | ||
52 | # Network specific inbound/outbound quotas | ||
53 | UNSPECIFIED_QUOTA_IN = unlimited | ||
54 | UNSPECIFIED_QUOTA_OUT = unlimited | ||
55 | # LOOPBACK | ||
56 | LOOPBACK_QUOTA_IN = unlimited | ||
57 | LOOPBACK_QUOTA_OUT = unlimited | ||
58 | # LAN | ||
59 | LAN_QUOTA_IN = unlimited | ||
60 | LAN_QUOTA_OUT = unlimited | ||
61 | #WAN | ||
62 | WAN_QUOTA_OUT = unlimited | ||
63 | WAN_QUOTA_IN = unlimited | ||
64 | # WLAN | ||
65 | WLAN_QUOTA_IN = unlimited | ||
66 | WLAN_QUOTA_OUT = unlimited | ||
67 | # BLUETOOTH | ||
68 | BLUETOOTH_QUOTA_IN = unlimited | ||
69 | BLUETOOTH_QUOTA_OUT = unlimited | ||
50 | 70 | ||
51 | [dht] | 71 | [dht] |
52 | DISABLE_TRY_CONNECT = YES | 72 | DISABLE_TRY_CONNECT = YES |
@@ -69,6 +89,10 @@ NO_IO = YES | |||
69 | FORCESTART = NO | 89 | FORCESTART = NO |
70 | AUTOSTART = NO | 90 | AUTOSTART = NO |
71 | 91 | ||
92 | [zonemaster] | ||
93 | FORCESTART = NO | ||
94 | AUTOSTART = NO | ||
95 | |||
72 | [namecache] | 96 | [namecache] |
73 | FORCESTART = NO | 97 | FORCESTART = NO |
74 | AUTOSTART = NO | 98 | AUTOSTART = NO |
diff --git a/src/rps/test_service_rps_peers.c b/src/rps/test_service_rps_peers.c deleted file mode 100644 index 9cd677fef..000000000 --- a/src/rps/test_service_rps_peers.c +++ /dev/null | |||
@@ -1,137 +0,0 @@ | |||
1 | /* | ||
2 | This file is part of GNUnet. | ||
3 | Copyright (C) | ||
4 | |||
5 | GNUnet is free software; you can redistribute it and/or modify | ||
6 | it under the terms of the GNU General Public License as published | ||
7 | by the Free Software Foundation; either version 3, or (at your | ||
8 | option) any later version. | ||
9 | |||
10 | GNUnet is distributed in the hope that it will be useful, but | ||
11 | WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
13 | General Public License for more details. | ||
14 | |||
15 | You should have received a copy of the GNU General Public License | ||
16 | along with GNUnet; see the file COPYING. If not, write to the | ||
17 | Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | ||
18 | Boston, MA 02110-1301, USA. | ||
19 | */ | ||
20 | /** | ||
21 | * @file rps/test_service_rps_peers.c | ||
22 | * @brief testcase for gnunet-service-rps_peers.c | ||
23 | */ | ||
24 | #include <platform.h> | ||
25 | #include "gnunet-service-rps_peers.h" | ||
26 | |||
27 | #define ABORT() { fprintf(stderr, "Error at %s:%d\n", __FILE__, __LINE__); Peers_terminate (); return 1; } | ||
28 | #define CHECK(c) { if (! (c)) ABORT(); } | ||
29 | |||
30 | #define FN_VALID_PEERS "DISABLE" | ||
31 | |||
32 | /** | ||
33 | * @brief Dummy implementation of #PeerOp (Operation on peer) | ||
34 | * | ||
35 | * @param cls closure | ||
36 | * @param peer peer | ||
37 | */ | ||
38 | void peer_op (void *cls, const struct GNUNET_PeerIdentity *peer) | ||
39 | { | ||
40 | GNUNET_assert (NULL != peer); | ||
41 | } | ||
42 | |||
43 | /** | ||
44 | * @brief Function that is called on a peer for later execution | ||
45 | * | ||
46 | * @param cls closure | ||
47 | * @param peer peer to execute function upon | ||
48 | */ | ||
49 | void | ||
50 | peer_op (void *cls, const struct GNUNET_PeerIdentity *peer); | ||
51 | |||
52 | static int | ||
53 | check () | ||
54 | { | ||
55 | struct GNUNET_PeerIdentity k1; | ||
56 | struct GNUNET_PeerIdentity own_id; | ||
57 | |||
58 | memset (&k1, 0, sizeof (k1)); | ||
59 | memset (&own_id, 1, sizeof (own_id)); | ||
60 | |||
61 | /* Do nothing */ | ||
62 | Peers_initialise (FN_VALID_PEERS, NULL, NULL, NULL, &own_id); | ||
63 | Peers_terminate (); | ||
64 | |||
65 | |||
66 | /* Create peer */ | ||
67 | Peers_initialise (FN_VALID_PEERS, NULL, NULL, NULL, &own_id); | ||
68 | CHECK (GNUNET_YES == Peers_insert_peer (&k1)); | ||
69 | Peers_terminate (); | ||
70 | |||
71 | |||
72 | /* Create peer */ | ||
73 | Peers_initialise (FN_VALID_PEERS, NULL, NULL, NULL, &own_id); | ||
74 | CHECK (GNUNET_YES == Peers_insert_peer (&k1)); | ||
75 | CHECK (GNUNET_YES == Peers_remove_peer (&k1)); | ||
76 | Peers_terminate (); | ||
77 | |||
78 | |||
79 | /* Insertion and Removal */ | ||
80 | Peers_initialise (FN_VALID_PEERS, NULL, NULL, NULL, &own_id); | ||
81 | CHECK (GNUNET_NO == Peers_check_peer_known (&k1)); | ||
82 | |||
83 | CHECK (GNUNET_YES == Peers_insert_peer (&k1)); | ||
84 | CHECK (GNUNET_NO == Peers_insert_peer (&k1)); | ||
85 | CHECK (GNUNET_YES == Peers_check_peer_known (&k1)); | ||
86 | |||
87 | CHECK (GNUNET_YES == Peers_remove_peer (&k1)); | ||
88 | CHECK (GNUNET_NO == Peers_remove_peer (&k1)); | ||
89 | CHECK (GNUNET_NO == Peers_check_peer_known (&k1)); | ||
90 | |||
91 | |||
92 | /* Flags */ | ||
93 | Peers_insert_peer (&k1); | ||
94 | |||
95 | CHECK (GNUNET_NO == Peers_check_peer_flag (&k1, Peers_PULL_REPLY_PENDING)); | ||
96 | CHECK (GNUNET_NO == Peers_check_peer_flag (&k1, Peers_ONLINE)); | ||
97 | CHECK (GNUNET_NO == Peers_check_peer_flag (&k1, Peers_TO_DESTROY)); | ||
98 | |||
99 | CHECK (GNUNET_NO == Peers_check_peer_flag (&k1, Peers_ONLINE)); | ||
100 | |||
101 | Peers_set_peer_flag (&k1, Peers_ONLINE); | ||
102 | CHECK (GNUNET_YES == Peers_check_peer_flag (&k1, Peers_ONLINE)); | ||
103 | CHECK (GNUNET_NO == Peers_check_peer_flag (&k1, Peers_TO_DESTROY)); | ||
104 | CHECK (GNUNET_YES == Peers_check_peer_flag (&k1, Peers_ONLINE)); | ||
105 | CHECK (GNUNET_NO == Peers_check_peer_flag (&k1, Peers_TO_DESTROY)); | ||
106 | |||
107 | /* Check send intention */ | ||
108 | CHECK (GNUNET_NO == Peers_check_peer_send_intention (&k1)); | ||
109 | |||
110 | /* Check existence of sending channel */ | ||
111 | CHECK (GNUNET_NO == Peers_check_sending_channel_exists (&k1)); | ||
112 | |||
113 | /* Check role of channels */ | ||
114 | CHECK (GNUNET_YES == Peers_check_channel_role (&k1, | ||
115 | NULL, | ||
116 | Peers_CHANNEL_ROLE_SENDING)); | ||
117 | CHECK (GNUNET_YES == Peers_check_channel_role (&k1, | ||
118 | NULL, | ||
119 | Peers_CHANNEL_ROLE_RECEIVING)); | ||
120 | |||
121 | CHECK (GNUNET_YES == Peers_schedule_operation (&k1, peer_op)); | ||
122 | |||
123 | Peers_terminate (); | ||
124 | return 0; | ||
125 | } | ||
126 | |||
127 | |||
128 | int | ||
129 | main (int argc, char *argv[]) | ||
130 | { | ||
131 | GNUNET_log_setup ("test_service_rps_peers", | ||
132 | "WARNING", | ||
133 | NULL); | ||
134 | return check (); | ||
135 | } | ||
136 | |||
137 | /* end of test_service_rps_peers.c */ | ||
diff --git a/src/set/Makefile.am b/src/set/Makefile.am index 14667d0ef..df17fa1ab 100644 --- a/src/set/Makefile.am +++ b/src/set/Makefile.am | |||
@@ -52,7 +52,7 @@ gnunet_set_ibf_profiler_LDADD = \ | |||
52 | gnunet_service_set_SOURCES = \ | 52 | gnunet_service_set_SOURCES = \ |
53 | gnunet-service-set.c gnunet-service-set.h \ | 53 | gnunet-service-set.c gnunet-service-set.h \ |
54 | gnunet-service-set_union.c gnunet-service-set_union.h \ | 54 | gnunet-service-set_union.c gnunet-service-set_union.h \ |
55 | gnunet-service-set_intersection.c \ | 55 | gnunet-service-set_intersection.c gnunet-service-set_intersection.h \ |
56 | ibf.c ibf.h \ | 56 | ibf.c ibf.h \ |
57 | gnunet-service-set_union_strata_estimator.c gnunet-service-set_union_strata_estimator.h \ | 57 | gnunet-service-set_union_strata_estimator.c gnunet-service-set_union_strata_estimator.h \ |
58 | gnunet-service-set_protocol.h | 58 | gnunet-service-set_protocol.h |
diff --git a/src/set/gnunet-service-set_union.c b/src/set/gnunet-service-set_union.c index 730124495..9586dcf27 100644 --- a/src/set/gnunet-service-set_union.c +++ b/src/set/gnunet-service-set_union.c | |||
@@ -364,7 +364,7 @@ fail_union_operation (struct Operation *op) | |||
364 | struct GNUNET_MQ_Envelope *ev; | 364 | struct GNUNET_MQ_Envelope *ev; |
365 | struct GNUNET_SET_ResultMessage *msg; | 365 | struct GNUNET_SET_ResultMessage *msg; |
366 | 366 | ||
367 | LOG (GNUNET_ERROR_TYPE_ERROR, | 367 | LOG (GNUNET_ERROR_TYPE_WARNING, |
368 | "union operation failed\n"); | 368 | "union operation failed\n"); |
369 | ev = GNUNET_MQ_msg (msg, GNUNET_MESSAGE_TYPE_SET_RESULT); | 369 | ev = GNUNET_MQ_msg (msg, GNUNET_MESSAGE_TYPE_SET_RESULT); |
370 | msg->result_status = htons (GNUNET_SET_STATUS_FAILURE); | 370 | msg->result_status = htons (GNUNET_SET_STATUS_FAILURE); |
@@ -1404,7 +1404,7 @@ send_client_done (void *cls) | |||
1404 | } | 1404 | } |
1405 | 1405 | ||
1406 | if (PHASE_DONE != op->state->phase) { | 1406 | if (PHASE_DONE != op->state->phase) { |
1407 | LOG (GNUNET_ERROR_TYPE_ERROR, | 1407 | LOG (GNUNET_ERROR_TYPE_WARNING, |
1408 | "union operation failed\n"); | 1408 | "union operation failed\n"); |
1409 | ev = GNUNET_MQ_msg (rm, GNUNET_MESSAGE_TYPE_SET_RESULT); | 1409 | ev = GNUNET_MQ_msg (rm, GNUNET_MESSAGE_TYPE_SET_RESULT); |
1410 | rm->result_status = htons (GNUNET_SET_STATUS_FAILURE); | 1410 | rm->result_status = htons (GNUNET_SET_STATUS_FAILURE); |
diff --git a/src/social/gnunet-service-social.c b/src/social/gnunet-service-social.c index dee68fdb8..5b2a8ba9b 100644 --- a/src/social/gnunet-service-social.c +++ b/src/social/gnunet-service-social.c | |||
@@ -96,7 +96,7 @@ static struct GNUNET_CONTAINER_MultiHashMap *apps_places; | |||
96 | * Application subscriptions per place. | 96 | * Application subscriptions per place. |
97 | * H(place_pub_key) -> H(app_id) | 97 | * H(place_pub_key) -> H(app_id) |
98 | */ | 98 | */ |
99 | static struct GNUNET_CONTAINER_MultiHashMap *places_apps; | 99 | //static struct GNUNET_CONTAINER_MultiHashMap *places_apps; |
100 | 100 | ||
101 | /** | 101 | /** |
102 | * Connected applications. | 102 | * Connected applications. |
@@ -255,10 +255,10 @@ struct Place | |||
255 | uint8_t is_ready; | 255 | uint8_t is_ready; |
256 | 256 | ||
257 | /** | 257 | /** |
258 | * Is the client disconnected? | 258 | * Is the client disconnecting? |
259 | * #GNUNET_YES or #GNUNET_NO | 259 | * #GNUNET_YES or #GNUNET_NO |
260 | */ | 260 | */ |
261 | uint8_t is_disconnected; | 261 | uint8_t is_disconnecting; |
262 | 262 | ||
263 | /** | 263 | /** |
264 | * Is this a host (#GNUNET_YES), or guest (#GNUNET_NO)? | 264 | * Is this a host (#GNUNET_YES), or guest (#GNUNET_NO)? |
@@ -348,7 +348,7 @@ struct Guest | |||
348 | /** | 348 | /** |
349 | * Join request to be transmitted to the master on join. | 349 | * Join request to be transmitted to the master on join. |
350 | */ | 350 | */ |
351 | struct GNUNET_MessageHeader *join_req; | 351 | struct GNUNET_MessageHeader *join_req; // FIXME: not used! |
352 | 352 | ||
353 | /** | 353 | /** |
354 | * Join decision received from PSYC. | 354 | * Join decision received from PSYC. |
@@ -487,8 +487,6 @@ cleanup_host (struct Host *hst) | |||
487 | { | 487 | { |
488 | struct Place *plc = &hst->place; | 488 | struct Place *plc = &hst->place; |
489 | 489 | ||
490 | if (NULL != hst->master) | ||
491 | GNUNET_PSYC_master_stop (hst->master, GNUNET_NO, NULL, NULL); // FIXME | ||
492 | GNUNET_CONTAINER_multihashmap_destroy (hst->join_reqs); | 490 | GNUNET_CONTAINER_multihashmap_destroy (hst->join_reqs); |
493 | GNUNET_CONTAINER_multihashmap_destroy (hst->relay_msgs); | 491 | GNUNET_CONTAINER_multihashmap_destroy (hst->relay_msgs); |
494 | GNUNET_CONTAINER_multihashmap_remove (hosts, &plc->pub_key_hash, plc); | 492 | GNUNET_CONTAINER_multihashmap_remove (hosts, &plc->pub_key_hash, plc); |
@@ -505,7 +503,7 @@ cleanup_guest (struct Guest *gst) | |||
505 | struct GNUNET_CONTAINER_MultiHashMap * | 503 | struct GNUNET_CONTAINER_MultiHashMap * |
506 | plc_gst = GNUNET_CONTAINER_multihashmap_get (place_guests, | 504 | plc_gst = GNUNET_CONTAINER_multihashmap_get (place_guests, |
507 | &plc->pub_key_hash); | 505 | &plc->pub_key_hash); |
508 | GNUNET_assert (NULL != plc_gst); // FIXME | 506 | GNUNET_assert (NULL != plc_gst); |
509 | GNUNET_CONTAINER_multihashmap_remove (plc_gst, &plc->ego_pub_hash, gst); | 507 | GNUNET_CONTAINER_multihashmap_remove (plc_gst, &plc->ego_pub_hash, gst); |
510 | 508 | ||
511 | if (0 == GNUNET_CONTAINER_multihashmap_size (plc_gst)) | 509 | if (0 == GNUNET_CONTAINER_multihashmap_size (plc_gst)) |
@@ -520,8 +518,6 @@ cleanup_guest (struct Guest *gst) | |||
520 | GNUNET_free (gst->join_req); | 518 | GNUNET_free (gst->join_req); |
521 | if (NULL != gst->relays) | 519 | if (NULL != gst->relays) |
522 | GNUNET_free (gst->relays); | 520 | GNUNET_free (gst->relays); |
523 | if (NULL != gst->slave) | ||
524 | GNUNET_PSYC_slave_part (gst->slave, GNUNET_NO, NULL, NULL); // FIXME | ||
525 | GNUNET_CONTAINER_multihashmap_remove (guests, &plc->pub_key_hash, plc); | 521 | GNUNET_CONTAINER_multihashmap_remove (guests, &plc->pub_key_hash, plc); |
526 | } | 522 | } |
527 | 523 | ||
@@ -537,8 +533,8 @@ cleanup_place (void *cls) | |||
537 | struct Place *plc = cls; | 533 | struct Place *plc = cls; |
538 | 534 | ||
539 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 535 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
540 | "%p Cleaning up place %s\n", | 536 | "cleaning up place %s\n", |
541 | plc, GNUNET_h2s (&plc->pub_key_hash)); | 537 | GNUNET_h2s (&plc->pub_key_hash)); |
542 | 538 | ||
543 | (GNUNET_YES == plc->is_host) | 539 | (GNUNET_YES == plc->is_host) |
544 | ? cleanup_host ((struct Host *) plc) | 540 | ? cleanup_host ((struct Host *) plc) |
@@ -583,12 +579,19 @@ client_notify_disconnect (void *cls, | |||
583 | { | 579 | { |
584 | if (cli->client == client) | 580 | if (cli->client == client) |
585 | { | 581 | { |
586 | GNUNET_CONTAINER_DLL_remove (plc->clients_head, plc->clients_tail, cli); | 582 | GNUNET_CONTAINER_DLL_remove (plc->clients_head, |
583 | plc->clients_tail, | ||
584 | cli); | ||
587 | GNUNET_free (cli); | 585 | GNUNET_free (cli); |
588 | break; | 586 | break; |
589 | } | 587 | } |
590 | cli = cli->next; | 588 | cli = cli->next; |
591 | } | 589 | } |
590 | if (GNUNET_YES == plc->is_disconnecting) | ||
591 | { | ||
592 | GNUNET_PSYC_slicer_destroy (plc->slicer); | ||
593 | GNUNET_free (plc); | ||
594 | } | ||
592 | } | 595 | } |
593 | 596 | ||
594 | 597 | ||
@@ -605,46 +608,55 @@ client_notify_connect (void *cls, | |||
605 | struct GNUNET_SERVICE_Client *client, | 608 | struct GNUNET_SERVICE_Client *client, |
606 | struct GNUNET_MQ_Handle *mq) | 609 | struct GNUNET_MQ_Handle *mq) |
607 | { | 610 | { |
608 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Client connected: %p\n", client); | 611 | struct Client *c = GNUNET_new (struct Client); |
609 | 612 | ||
610 | struct Client *c = GNUNET_malloc (sizeof (*c)); | 613 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
614 | "Client %p connected with queue %p\n", | ||
615 | client, | ||
616 | mq); | ||
611 | c->client = client; | 617 | c->client = client; |
612 | |||
613 | return c; | 618 | return c; |
614 | } | 619 | } |
615 | 620 | ||
616 | 621 | ||
617 | /** | 622 | /** |
618 | * Send message to a client. | 623 | * Send message to all clients connected to a place and |
619 | */ | 624 | * takes care of freeing @env. |
620 | static inline void | ||
621 | client_send_msg (struct GNUNET_SERVICE_Client *client, | ||
622 | const struct GNUNET_MessageHeader *msg) | ||
623 | { | ||
624 | struct GNUNET_MQ_Envelope * | ||
625 | env = GNUNET_MQ_msg_copy (msg); | ||
626 | |||
627 | GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client), | ||
628 | env); | ||
629 | } | ||
630 | |||
631 | |||
632 | /** | ||
633 | * Send message to all clients connected to a place. | ||
634 | */ | 625 | */ |
635 | static void | 626 | static void |
636 | place_send_msg (const struct Place *plc, | 627 | place_send_msg (const struct Place *plc, |
637 | const struct GNUNET_MessageHeader *msg) | 628 | struct GNUNET_MQ_Envelope *env) |
638 | { | 629 | { |
630 | struct ClientListItem *cli = plc->clients_head; | ||
631 | |||
639 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 632 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
640 | "%p Sending message to clients of place.\n", plc); | 633 | "%p Sending message to clients of place.\n", plc); |
641 | |||
642 | struct ClientListItem *cli = plc->clients_head; | ||
643 | while (NULL != cli) | 634 | while (NULL != cli) |
644 | { | 635 | { |
645 | client_send_msg (cli->client, msg); | 636 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
637 | "Sending message to client %p\n", | ||
638 | cli); | ||
639 | GNUNET_MQ_send_copy (GNUNET_SERVICE_client_get_mq (cli->client), | ||
640 | env); | ||
646 | cli = cli->next; | 641 | cli = cli->next; |
647 | } | 642 | } |
643 | GNUNET_MQ_discard (env); | ||
644 | } | ||
645 | |||
646 | |||
647 | static void | ||
648 | place_send_leave_ack (struct Place *plc) | ||
649 | { | ||
650 | struct GNUNET_MQ_Envelope *env; | ||
651 | |||
652 | for (struct ClientListItem *cli = plc->clients_head; | ||
653 | NULL != cli; | ||
654 | cli = cli->next) | ||
655 | { | ||
656 | env = GNUNET_MQ_msg_header (GNUNET_MESSAGE_TYPE_SOCIAL_PLACE_LEAVE_ACK); | ||
657 | GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (cli->client), | ||
658 | env); | ||
659 | } | ||
648 | } | 660 | } |
649 | 661 | ||
650 | 662 | ||
@@ -666,23 +678,21 @@ static void | |||
666 | client_send_result (struct GNUNET_SERVICE_Client *client, uint64_t op_id, | 678 | client_send_result (struct GNUNET_SERVICE_Client *client, uint64_t op_id, |
667 | int64_t result_code, const void *data, uint16_t data_size) | 679 | int64_t result_code, const void *data, uint16_t data_size) |
668 | { | 680 | { |
681 | struct GNUNET_MQ_Envelope *env; | ||
669 | struct GNUNET_OperationResultMessage *res; | 682 | struct GNUNET_OperationResultMessage *res; |
670 | 683 | ||
671 | res = GNUNET_malloc (sizeof (*res) + data_size); | 684 | env = GNUNET_MQ_msg_extra (res, |
672 | res->header.type = htons (GNUNET_MESSAGE_TYPE_PSYC_RESULT_CODE); | 685 | data_size, |
673 | res->header.size = htons (sizeof (*res) + data_size); | 686 | GNUNET_MESSAGE_TYPE_PSYC_RESULT_CODE); |
674 | res->result_code = GNUNET_htonll (result_code); | 687 | res->result_code = GNUNET_htonll (result_code); |
675 | res->op_id = op_id; | 688 | res->op_id = op_id; |
676 | if (0 < data_size) | 689 | if (0 < data_size) |
677 | GNUNET_memcpy (&res[1], data, data_size); | 690 | GNUNET_memcpy (&res[1], data, data_size); |
678 | |||
679 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 691 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
680 | "%p Sending result to client for operation #%" PRIu64 ": " | 692 | "%p Sending result to client for operation #%" PRIu64 ": " |
681 | "%" PRId64 " (size: %u)\n", | 693 | "%" PRId64 " (size: %u)\n", |
682 | client, GNUNET_ntohll (op_id), result_code, data_size); | 694 | client, GNUNET_ntohll (op_id), result_code, data_size); |
683 | 695 | GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client), env); | |
684 | client_send_msg (client, &res->header); | ||
685 | GNUNET_free (res); | ||
686 | } | 696 | } |
687 | 697 | ||
688 | 698 | ||
@@ -690,19 +700,21 @@ static void | |||
690 | client_send_host_enter_ack (struct GNUNET_SERVICE_Client *client, | 700 | client_send_host_enter_ack (struct GNUNET_SERVICE_Client *client, |
691 | struct Host *hst, uint32_t result) | 701 | struct Host *hst, uint32_t result) |
692 | { | 702 | { |
703 | struct GNUNET_MQ_Envelope *env; | ||
704 | struct HostEnterAck *hack; | ||
693 | struct Place *plc = &hst->place; | 705 | struct Place *plc = &hst->place; |
694 | 706 | ||
695 | struct HostEnterAck hack; | 707 | env = GNUNET_MQ_msg (hack, |
696 | hack.header.type = htons (GNUNET_MESSAGE_TYPE_SOCIAL_HOST_ENTER_ACK); | 708 | GNUNET_MESSAGE_TYPE_SOCIAL_HOST_ENTER_ACK); |
697 | hack.header.size = htons (sizeof (hack)); | 709 | hack->result_code = htonl (result); |
698 | hack.result_code = htonl (result); | 710 | hack->max_message_id = GNUNET_htonll (plc->max_message_id); |
699 | hack.max_message_id = GNUNET_htonll (plc->max_message_id); | 711 | hack->place_pub_key = plc->pub_key; |
700 | hack.place_pub_key = plc->pub_key; | ||
701 | 712 | ||
702 | if (NULL != client) | 713 | if (NULL != client) |
703 | client_send_msg (client, &hack.header); | 714 | GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client), |
715 | env); | ||
704 | else | 716 | else |
705 | place_send_msg (plc, &hack.header); | 717 | place_send_msg (plc, env); |
706 | } | 718 | } |
707 | 719 | ||
708 | 720 | ||
@@ -736,7 +748,8 @@ psyc_recv_join_request (void *cls, | |||
736 | GNUNET_CRYPTO_hash (slave_key, sizeof (*slave_key), &slave_key_hash); | 748 | GNUNET_CRYPTO_hash (slave_key, sizeof (*slave_key), &slave_key_hash); |
737 | GNUNET_CONTAINER_multihashmap_put (hst->join_reqs, &slave_key_hash, jh, | 749 | GNUNET_CONTAINER_multihashmap_put (hst->join_reqs, &slave_key_hash, jh, |
738 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE); | 750 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE); |
739 | place_send_msg (&hst->place, &req->header); | 751 | place_send_msg (&hst->place, |
752 | GNUNET_MQ_msg_copy (&req->header)); | ||
740 | } | 753 | } |
741 | 754 | ||
742 | 755 | ||
@@ -746,18 +759,29 @@ psyc_recv_join_request (void *cls, | |||
746 | static void | 759 | static void |
747 | psyc_slave_connected (void *cls, int result, uint64_t max_message_id) | 760 | psyc_slave_connected (void *cls, int result, uint64_t max_message_id) |
748 | { | 761 | { |
762 | struct GNUNET_PSYC_CountersResultMessage *res; | ||
763 | struct GNUNET_MQ_Envelope *env; | ||
749 | struct Guest *gst = cls; | 764 | struct Guest *gst = cls; |
750 | struct Place *plc = &gst->place; | 765 | struct Place *plc = &gst->place; |
766 | |||
751 | plc->max_message_id = max_message_id; | 767 | plc->max_message_id = max_message_id; |
752 | plc->is_ready = GNUNET_YES; | 768 | plc->is_ready = GNUNET_YES; |
769 | env = GNUNET_MQ_msg (res, | ||
770 | GNUNET_MESSAGE_TYPE_SOCIAL_GUEST_ENTER_ACK); | ||
771 | res->result_code = | ||
772 | (result != GNUNET_SYSERR) ? htonl (GNUNET_OK) : htonl (GNUNET_SYSERR); | ||
773 | res->max_message_id = GNUNET_htonll (plc->max_message_id); | ||
774 | place_send_msg (plc, env); | ||
775 | } | ||
753 | 776 | ||
754 | struct GNUNET_PSYC_CountersResultMessage res; | ||
755 | res.header.type = htons (GNUNET_MESSAGE_TYPE_SOCIAL_GUEST_ENTER_ACK); | ||
756 | res.header.size = htons (sizeof (res)); | ||
757 | res.result_code = htonl (result); | ||
758 | res.max_message_id = GNUNET_htonll (plc->max_message_id); | ||
759 | 777 | ||
760 | place_send_msg (plc, &res.header); | 778 | static void |
779 | slave_parted_after_join_decision (void *cls) | ||
780 | { | ||
781 | struct Guest *gst = cls; | ||
782 | |||
783 | GNUNET_assert (NULL != gst->join_dcsn); | ||
784 | place_send_msg (&gst->place, GNUNET_MQ_msg_copy (&gst->join_dcsn->header)); | ||
761 | } | 785 | } |
762 | 786 | ||
763 | 787 | ||
@@ -771,7 +795,21 @@ psyc_recv_join_dcsn (void *cls, | |||
771 | const struct GNUNET_PSYC_Message *join_msg) | 795 | const struct GNUNET_PSYC_Message *join_msg) |
772 | { | 796 | { |
773 | struct Guest *gst = cls; | 797 | struct Guest *gst = cls; |
774 | place_send_msg (&gst->place, &dcsn->header); | 798 | |
799 | gst->join_dcsn = GNUNET_malloc (dcsn->header.size); | ||
800 | GNUNET_memcpy (gst->join_dcsn, | ||
801 | dcsn, | ||
802 | dcsn->header.size); | ||
803 | if (GNUNET_NO == is_admitted) | ||
804 | { | ||
805 | GNUNET_PSYC_slave_part (gst->slave, | ||
806 | GNUNET_NO, | ||
807 | &slave_parted_after_join_decision, | ||
808 | gst); | ||
809 | gst->slave = NULL; | ||
810 | return; | ||
811 | } | ||
812 | place_send_msg (&gst->place, GNUNET_MQ_msg_copy (&gst->join_dcsn->header)); | ||
775 | } | 813 | } |
776 | 814 | ||
777 | 815 | ||
@@ -792,7 +830,7 @@ psyc_recv_message (void *cls, | |||
792 | 830 | ||
793 | GNUNET_PSYC_slicer_message (plc->slicer, msg); | 831 | GNUNET_PSYC_slicer_message (plc->slicer, msg); |
794 | 832 | ||
795 | place_send_msg (plc, &msg->header); | 833 | place_send_msg (plc, GNUNET_MQ_msg_copy (&msg->header)); |
796 | } | 834 | } |
797 | 835 | ||
798 | 836 | ||
@@ -1096,9 +1134,6 @@ place_init (struct Place *plc) | |||
1096 | static int | 1134 | static int |
1097 | place_add (const struct PlaceEnterRequest *ereq) | 1135 | place_add (const struct PlaceEnterRequest *ereq) |
1098 | { | 1136 | { |
1099 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1100 | "Adding place to hashmap:\n"); | ||
1101 | |||
1102 | struct EgoPlacePublicKey ego_place_pub_key = { | 1137 | struct EgoPlacePublicKey ego_place_pub_key = { |
1103 | .ego_pub_key = ereq->ego_pub_key, | 1138 | .ego_pub_key = ereq->ego_pub_key, |
1104 | .place_pub_key = ereq->place_pub_key, | 1139 | .place_pub_key = ereq->place_pub_key, |
@@ -1173,7 +1208,9 @@ app_place_add (const char *app_id, | |||
1173 | return GNUNET_NO; | 1208 | return GNUNET_NO; |
1174 | 1209 | ||
1175 | if (GNUNET_SYSERR == place_add (ereq)) | 1210 | if (GNUNET_SYSERR == place_add (ereq)) |
1211 | { | ||
1176 | return GNUNET_SYSERR; | 1212 | return GNUNET_SYSERR; |
1213 | } | ||
1177 | 1214 | ||
1178 | if (GNUNET_OK != GNUNET_CONTAINER_multihashmap_put (app_places, &ego_place_pub_hash, NULL, | 1215 | if (GNUNET_OK != GNUNET_CONTAINER_multihashmap_put (app_places, &ego_place_pub_hash, NULL, |
1179 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST)) | 1216 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST)) |
@@ -1181,32 +1218,6 @@ app_place_add (const char *app_id, | |||
1181 | GNUNET_break (0); | 1218 | GNUNET_break (0); |
1182 | return GNUNET_SYSERR; | 1219 | return GNUNET_SYSERR; |
1183 | } | 1220 | } |
1184 | |||
1185 | struct GNUNET_HashCode place_pub_hash; | ||
1186 | GNUNET_CRYPTO_hash (&ereq->place_pub_key, sizeof (ereq->place_pub_key), &place_pub_hash); | ||
1187 | |||
1188 | struct GNUNET_CONTAINER_MultiHashMap * | ||
1189 | place_apps = GNUNET_CONTAINER_multihashmap_get (places_apps, &place_pub_hash); | ||
1190 | if (NULL == place_apps) | ||
1191 | { | ||
1192 | place_apps = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_NO); | ||
1193 | if (GNUNET_OK != GNUNET_CONTAINER_multihashmap_put (places_apps, &place_pub_hash, place_apps, | ||
1194 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST)) | ||
1195 | { | ||
1196 | GNUNET_break (0); | ||
1197 | } | ||
1198 | } | ||
1199 | |||
1200 | size_t app_id_size = strlen (app_id) + 1; | ||
1201 | void *app_id_value = GNUNET_malloc (app_id_size); | ||
1202 | GNUNET_memcpy (app_id_value, app_id, app_id_size); | ||
1203 | |||
1204 | if (GNUNET_OK != GNUNET_CONTAINER_multihashmap_put (place_apps, &app_id_hash, app_id_value, | ||
1205 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY)) | ||
1206 | { | ||
1207 | GNUNET_break (0); | ||
1208 | } | ||
1209 | |||
1210 | return GNUNET_OK; | 1221 | return GNUNET_OK; |
1211 | } | 1222 | } |
1212 | 1223 | ||
@@ -1223,7 +1234,10 @@ static int | |||
1223 | app_place_save (const char *app_id, | 1234 | app_place_save (const char *app_id, |
1224 | const struct PlaceEnterRequest *ereq) | 1235 | const struct PlaceEnterRequest *ereq) |
1225 | { | 1236 | { |
1226 | app_place_add (app_id, ereq); | 1237 | if (GNUNET_SYSERR == app_place_add (app_id, ereq)) |
1238 | { | ||
1239 | GNUNET_assert (0); | ||
1240 | } | ||
1227 | 1241 | ||
1228 | if (NULL == dir_places) | 1242 | if (NULL == dir_places) |
1229 | return GNUNET_SYSERR; | 1243 | return GNUNET_SYSERR; |
@@ -1304,18 +1318,6 @@ app_place_remove (const char *app_id, | |||
1304 | if (NULL != app_places) | 1318 | if (NULL != app_places) |
1305 | GNUNET_CONTAINER_multihashmap_remove (app_places, &place_pub_hash, NULL); | 1319 | GNUNET_CONTAINER_multihashmap_remove (app_places, &place_pub_hash, NULL); |
1306 | 1320 | ||
1307 | struct GNUNET_CONTAINER_MultiHashMap * | ||
1308 | place_apps = GNUNET_CONTAINER_multihashmap_get (places_apps, &place_pub_hash); | ||
1309 | if (NULL != place_apps) | ||
1310 | { | ||
1311 | void *app_id_value = GNUNET_CONTAINER_multihashmap_get (place_apps, &app_id_hash); | ||
1312 | if (NULL != app_id_value) | ||
1313 | { | ||
1314 | GNUNET_CONTAINER_multihashmap_remove (place_apps, &app_id_hash, app_id_value); | ||
1315 | GNUNET_free (app_id_value); | ||
1316 | } | ||
1317 | } | ||
1318 | |||
1319 | int ret = GNUNET_OK; | 1321 | int ret = GNUNET_OK; |
1320 | 1322 | ||
1321 | if (0 != unlink (app_place_filename)) | 1323 | if (0 != unlink (app_place_filename)) |
@@ -1407,6 +1409,124 @@ msg_proc_parse (const struct MsgProcRequest *mpreq, | |||
1407 | } | 1409 | } |
1408 | 1410 | ||
1409 | 1411 | ||
1412 | void | ||
1413 | app_notify_place (const struct GNUNET_MessageHeader *msg, | ||
1414 | struct GNUNET_SERVICE_Client *client) | ||
1415 | { | ||
1416 | struct AppPlaceMessage *amsg; | ||
1417 | struct GNUNET_MQ_Envelope *env; | ||
1418 | uint16_t msg_size = ntohs (msg->size); | ||
1419 | |||
1420 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1421 | "%p Sending place notification of type %u to client.\n", | ||
1422 | client, ntohs (msg->type)); | ||
1423 | switch (ntohs (msg->type)) | ||
1424 | { | ||
1425 | case GNUNET_MESSAGE_TYPE_SOCIAL_HOST_ENTER: | ||
1426 | { | ||
1427 | struct HostEnterRequest *hreq = (struct HostEnterRequest *) msg; | ||
1428 | if (msg_size < sizeof (struct HostEnterRequest)) | ||
1429 | return; | ||
1430 | env = GNUNET_MQ_msg (amsg, | ||
1431 | GNUNET_MESSAGE_TYPE_SOCIAL_APP_PLACE); | ||
1432 | // FIXME: also notify about not entered places | ||
1433 | amsg->place_state = GNUNET_SOCIAL_PLACE_STATE_ENTERED; | ||
1434 | amsg->is_host = GNUNET_YES; | ||
1435 | amsg->ego_pub_key = hreq->ego_pub_key; | ||
1436 | amsg->place_pub_key = hreq->place_pub_key; | ||
1437 | GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client), | ||
1438 | env); | ||
1439 | break; | ||
1440 | } | ||
1441 | case GNUNET_MESSAGE_TYPE_SOCIAL_GUEST_ENTER: | ||
1442 | { | ||
1443 | if (msg_size < sizeof (struct GuestEnterRequest)) | ||
1444 | return; | ||
1445 | struct GuestEnterRequest *greq = (struct GuestEnterRequest *) msg; | ||
1446 | env = GNUNET_MQ_msg (amsg, | ||
1447 | GNUNET_MESSAGE_TYPE_SOCIAL_APP_PLACE); | ||
1448 | // FIXME: also notify about not entered places | ||
1449 | amsg->place_state = GNUNET_SOCIAL_PLACE_STATE_ENTERED; | ||
1450 | amsg->is_host = GNUNET_NO; | ||
1451 | amsg->ego_pub_key = greq->ego_pub_key; | ||
1452 | amsg->place_pub_key = greq->place_pub_key; | ||
1453 | GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client), | ||
1454 | env); | ||
1455 | break; | ||
1456 | } | ||
1457 | default: | ||
1458 | return; | ||
1459 | } | ||
1460 | } | ||
1461 | |||
1462 | |||
1463 | void | ||
1464 | app_notify_place_end (struct GNUNET_SERVICE_Client *client) | ||
1465 | { | ||
1466 | struct GNUNET_MQ_Envelope *env; | ||
1467 | |||
1468 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1469 | "%p Sending end of place list notification to client\n", | ||
1470 | client); | ||
1471 | env = GNUNET_MQ_msg_header (GNUNET_MESSAGE_TYPE_SOCIAL_APP_PLACE_END); | ||
1472 | GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client), | ||
1473 | env); | ||
1474 | } | ||
1475 | |||
1476 | |||
1477 | void | ||
1478 | app_notify_ego (struct Ego *ego, struct GNUNET_SERVICE_Client *client) | ||
1479 | { | ||
1480 | struct AppEgoMessage *emsg; | ||
1481 | struct GNUNET_MQ_Envelope *env; | ||
1482 | size_t name_size = strlen (ego->name) + 1; | ||
1483 | |||
1484 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1485 | "%p Sending ego notification to client: %s\n", | ||
1486 | client, ego->name); | ||
1487 | env = GNUNET_MQ_msg_extra (emsg, | ||
1488 | name_size, | ||
1489 | GNUNET_MESSAGE_TYPE_SOCIAL_APP_EGO); | ||
1490 | GNUNET_CRYPTO_ecdsa_key_get_public (&ego->key, &emsg->ego_pub_key); | ||
1491 | GNUNET_memcpy (&emsg[1], ego->name, name_size); | ||
1492 | GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client), | ||
1493 | env); | ||
1494 | } | ||
1495 | |||
1496 | |||
1497 | void | ||
1498 | app_notify_ego_end (struct GNUNET_SERVICE_Client *client) | ||
1499 | { | ||
1500 | struct GNUNET_MQ_Envelope *env; | ||
1501 | |||
1502 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1503 | "%p Sending end of ego list notification to client\n", | ||
1504 | client); | ||
1505 | env = GNUNET_MQ_msg_header (GNUNET_MESSAGE_TYPE_SOCIAL_APP_EGO_END); | ||
1506 | GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client), | ||
1507 | env); | ||
1508 | } | ||
1509 | |||
1510 | |||
1511 | int | ||
1512 | app_place_entry_notify (void *cls, const struct GNUNET_HashCode *key, void *value) | ||
1513 | { | ||
1514 | struct GNUNET_MessageHeader * | ||
1515 | msg = GNUNET_CONTAINER_multihashmap_get (places, key); | ||
1516 | if (NULL != msg) | ||
1517 | app_notify_place (msg, cls); | ||
1518 | return GNUNET_YES; | ||
1519 | } | ||
1520 | |||
1521 | |||
1522 | int | ||
1523 | ego_entry (void *cls, const struct GNUNET_HashCode *key, void *value) | ||
1524 | { | ||
1525 | app_notify_ego (value, cls); | ||
1526 | return GNUNET_YES; | ||
1527 | } | ||
1528 | |||
1529 | |||
1410 | static int | 1530 | static int |
1411 | check_client_msg_proc_set (void *cls, | 1531 | check_client_msg_proc_set (void *cls, |
1412 | const struct MsgProcRequest *mpreq) | 1532 | const struct MsgProcRequest *mpreq) |
@@ -1518,9 +1638,8 @@ static void | |||
1518 | handle_client_host_enter (void *cls, | 1638 | handle_client_host_enter (void *cls, |
1519 | const struct HostEnterRequest *hr) | 1639 | const struct HostEnterRequest *hr) |
1520 | { | 1640 | { |
1521 | struct Client *c = cls; | 1641 | struct Client *c = cls; |
1522 | struct GNUNET_SERVICE_Client *client = c->client; | 1642 | struct GNUNET_SERVICE_Client *client = c->client; |
1523 | |||
1524 | struct HostEnterRequest * | 1643 | struct HostEnterRequest * |
1525 | hreq = (struct HostEnterRequest *) GNUNET_copy_message (&hr->header); | 1644 | hreq = (struct HostEnterRequest *) GNUNET_copy_message (&hr->header); |
1526 | 1645 | ||
@@ -1578,7 +1697,7 @@ handle_client_host_enter (void *cls, | |||
1578 | if (ret != GNUNET_SYSERR) | 1697 | if (ret != GNUNET_SYSERR) |
1579 | { | 1698 | { |
1580 | 1699 | ||
1581 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 1700 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
1582 | "%p Client connected as host to place %s.\n", | 1701 | "%p Client connected as host to place %s.\n", |
1583 | hst, GNUNET_h2s (&plc->pub_key_hash)); | 1702 | hst, GNUNET_h2s (&plc->pub_key_hash)); |
1584 | 1703 | ||
@@ -1586,6 +1705,7 @@ handle_client_host_enter (void *cls, | |||
1586 | cli->client = client; | 1705 | cli->client = client; |
1587 | GNUNET_CONTAINER_DLL_insert (plc->clients_head, plc->clients_tail, cli); | 1706 | GNUNET_CONTAINER_DLL_insert (plc->clients_head, plc->clients_tail, cli); |
1588 | c->place = plc; | 1707 | c->place = plc; |
1708 | app_notify_place (&hreq->header, client); | ||
1589 | } | 1709 | } |
1590 | 1710 | ||
1591 | GNUNET_CRYPTO_eddsa_key_clear (&hreq->place_key); | 1711 | GNUNET_CRYPTO_eddsa_key_clear (&hreq->place_key); |
@@ -1622,8 +1742,12 @@ guest_enter (const struct GuestEnterRequest *greq, struct Guest **ret_gst) | |||
1622 | struct Ego *ego = GNUNET_CONTAINER_multihashmap_get (egos, &ego_pub_hash); | 1742 | struct Ego *ego = GNUNET_CONTAINER_multihashmap_get (egos, &ego_pub_hash); |
1623 | 1743 | ||
1624 | if (NULL == ego) | 1744 | if (NULL == ego) |
1745 | { | ||
1625 | return GNUNET_SYSERR; | 1746 | return GNUNET_SYSERR; |
1747 | } | ||
1626 | 1748 | ||
1749 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1750 | "entering as guest\n"); | ||
1627 | struct GNUNET_HashCode place_pub_hash; | 1751 | struct GNUNET_HashCode place_pub_hash; |
1628 | GNUNET_CRYPTO_hash (&greq->place_pub_key, sizeof (greq->place_pub_key), | 1752 | GNUNET_CRYPTO_hash (&greq->place_pub_key, sizeof (greq->place_pub_key), |
1629 | &place_pub_hash); | 1753 | &place_pub_hash); |
@@ -1635,9 +1759,16 @@ guest_enter (const struct GuestEnterRequest *greq, struct Guest **ret_gst) | |||
1635 | if (NULL != plc_gst) | 1759 | if (NULL != plc_gst) |
1636 | gst = GNUNET_CONTAINER_multihashmap_get (plc_gst, &ego_pub_hash); | 1760 | gst = GNUNET_CONTAINER_multihashmap_get (plc_gst, &ego_pub_hash); |
1637 | 1761 | ||
1638 | if (NULL == gst || NULL == gst->slave) | 1762 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
1763 | "plc_gst = %p, gst = %p\n", | ||
1764 | plc_gst, | ||
1765 | gst); | ||
1766 | if (NULL == gst) | ||
1639 | { | 1767 | { |
1640 | gst = GNUNET_new (struct Guest); | 1768 | gst = GNUNET_new (struct Guest); |
1769 | } | ||
1770 | if (NULL == gst->slave) | ||
1771 | { | ||
1641 | gst->origin = greq->origin; | 1772 | gst->origin = greq->origin; |
1642 | gst->relay_count = ntohl (greq->relay_count); | 1773 | gst->relay_count = ntohl (greq->relay_count); |
1643 | 1774 | ||
@@ -1710,11 +1841,12 @@ guest_enter (const struct GuestEnterRequest *greq, struct Guest **ret_gst) | |||
1710 | plc_gst = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_YES); | 1841 | plc_gst = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_YES); |
1711 | (void) GNUNET_CONTAINER_multihashmap_put (place_guests, &plc->pub_key_hash, plc_gst, | 1842 | (void) GNUNET_CONTAINER_multihashmap_put (place_guests, &plc->pub_key_hash, plc_gst, |
1712 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST); | 1843 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST); |
1713 | } | 1844 | (void) GNUNET_CONTAINER_multihashmap_put (plc_gst, &plc->ego_pub_hash, gst, |
1714 | (void) GNUNET_CONTAINER_multihashmap_put (plc_gst, &plc->ego_pub_hash, gst, | 1845 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST); |
1715 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST); | 1846 | (void) GNUNET_CONTAINER_multihashmap_put (guests, &plc->pub_key_hash, gst, |
1716 | (void) GNUNET_CONTAINER_multihashmap_put (guests, &plc->pub_key_hash, gst, | ||
1717 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE); | 1847 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE); |
1848 | |||
1849 | } | ||
1718 | gst->slave | 1850 | gst->slave |
1719 | = GNUNET_PSYC_slave_join (cfg, &plc->pub_key, &plc->ego_key, | 1851 | = GNUNET_PSYC_slave_join (cfg, &plc->pub_key, &plc->ego_key, |
1720 | gst->join_flags, &gst->origin, | 1852 | gst->join_flags, &gst->origin, |
@@ -1724,6 +1856,9 @@ guest_enter (const struct GuestEnterRequest *greq, struct Guest **ret_gst) | |||
1724 | &psyc_recv_join_dcsn, | 1856 | &psyc_recv_join_dcsn, |
1725 | gst, join_msg); | 1857 | gst, join_msg); |
1726 | plc->channel = GNUNET_PSYC_slave_get_channel (gst->slave); | 1858 | plc->channel = GNUNET_PSYC_slave_get_channel (gst->slave); |
1859 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1860 | "slave entered channel %p\n", | ||
1861 | plc->channel); | ||
1727 | ret = GNUNET_YES; | 1862 | ret = GNUNET_YES; |
1728 | } | 1863 | } |
1729 | 1864 | ||
@@ -1734,78 +1869,96 @@ guest_enter (const struct GuestEnterRequest *greq, struct Guest **ret_gst) | |||
1734 | 1869 | ||
1735 | 1870 | ||
1736 | static int | 1871 | static int |
1737 | check_client_guest_enter (void *cls, | 1872 | client_guest_enter (struct Client *c, |
1738 | const struct GuestEnterRequest *greq) | 1873 | const struct GuestEnterRequest *greq) |
1739 | { | ||
1740 | return GNUNET_OK; | ||
1741 | } | ||
1742 | |||
1743 | |||
1744 | /** | ||
1745 | * Handle a connecting client entering a place as guest. | ||
1746 | */ | ||
1747 | static void | ||
1748 | handle_client_guest_enter (void *cls, | ||
1749 | const struct GuestEnterRequest *greq) | ||
1750 | { | 1874 | { |
1751 | struct Client *c = cls; | 1875 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
1876 | "client_guest_enter\n"); | ||
1877 | struct GNUNET_PSYC_CountersResultMessage *result_msg; | ||
1878 | struct GNUNET_MQ_Envelope *env; | ||
1752 | struct GNUNET_SERVICE_Client *client = c->client; | 1879 | struct GNUNET_SERVICE_Client *client = c->client; |
1753 | |||
1754 | uint16_t remaining = ntohs (greq->header.size) - sizeof (*greq); | 1880 | uint16_t remaining = ntohs (greq->header.size) - sizeof (*greq); |
1755 | const char *app_id = NULL; | 1881 | const char *app_id = NULL; |
1756 | uint16_t offset = GNUNET_STRINGS_buffer_tokenize ((const char *) &greq[1], | 1882 | uint16_t offset = GNUNET_STRINGS_buffer_tokenize ((const char *) &greq[1], |
1757 | remaining, 1, &app_id); | 1883 | remaining, 1, &app_id); |
1758 | if (0 == offset) | ||
1759 | { | ||
1760 | GNUNET_break (0); | ||
1761 | GNUNET_SERVICE_client_drop (client); | ||
1762 | return; | ||
1763 | } | ||
1764 | |||
1765 | struct Guest *gst = NULL; | 1884 | struct Guest *gst = NULL; |
1766 | struct Place *plc = NULL; | 1885 | struct Place *plc = NULL; |
1767 | 1886 | ||
1887 | if (0 == offset) | ||
1888 | { | ||
1889 | return GNUNET_SYSERR; | ||
1890 | } | ||
1768 | switch (guest_enter (greq, &gst)) | 1891 | switch (guest_enter (greq, &gst)) |
1769 | { | 1892 | { |
1770 | case GNUNET_YES: | 1893 | case GNUNET_YES: |
1894 | { | ||
1771 | plc = c->place = &gst->place; | 1895 | plc = c->place = &gst->place; |
1896 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1897 | "guest entered successfully to local place %s\n", | ||
1898 | GNUNET_h2s (&plc->pub_key_hash)); | ||
1772 | plc->guest = gst; | 1899 | plc->guest = gst; |
1773 | app_place_save (app_id, (const struct PlaceEnterRequest *) greq); | 1900 | app_place_save (app_id, (const struct PlaceEnterRequest *) greq); |
1901 | app_notify_place (&greq->header, client); | ||
1774 | break; | 1902 | break; |
1775 | 1903 | } | |
1776 | case GNUNET_NO: | 1904 | case GNUNET_NO: |
1777 | { | 1905 | { |
1778 | plc = c->place = &gst->place; | 1906 | plc = c->place = &gst->place; |
1907 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1908 | "guest re-entered successfully to local place %s\n", | ||
1909 | GNUNET_h2s (&plc->pub_key_hash)); | ||
1779 | plc->guest = gst; | 1910 | plc->guest = gst; |
1780 | 1911 | env = GNUNET_MQ_msg (result_msg, | |
1781 | struct GNUNET_PSYC_CountersResultMessage res; | 1912 | GNUNET_MESSAGE_TYPE_SOCIAL_GUEST_ENTER_ACK); |
1782 | res.header.type = htons (GNUNET_MESSAGE_TYPE_SOCIAL_GUEST_ENTER_ACK); | 1913 | result_msg->result_code = htonl (GNUNET_OK); |
1783 | res.header.size = htons (sizeof (res)); | 1914 | result_msg->max_message_id = GNUNET_htonll (plc->max_message_id); |
1784 | res.result_code = htonl (GNUNET_OK); | 1915 | GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client), |
1785 | res.max_message_id = GNUNET_htonll (plc->max_message_id); | 1916 | env); |
1786 | |||
1787 | client_send_msg (client, &res.header); | ||
1788 | if (NULL != gst->join_dcsn) | 1917 | if (NULL != gst->join_dcsn) |
1789 | client_send_msg (client, &gst->join_dcsn->header); | 1918 | { |
1790 | 1919 | env = GNUNET_MQ_msg_copy (&gst->join_dcsn->header); | |
1920 | GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client), | ||
1921 | env); | ||
1922 | } | ||
1791 | break; | 1923 | break; |
1792 | } | 1924 | } |
1793 | case GNUNET_SYSERR: | 1925 | case GNUNET_SYSERR: |
1794 | GNUNET_break (0); | 1926 | { |
1795 | GNUNET_SERVICE_client_drop (client); | 1927 | return GNUNET_SYSERR; |
1796 | return; | 1928 | } |
1797 | } | 1929 | } |
1798 | |||
1799 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1800 | "%p Client connected as guest to place %s.\n", | ||
1801 | gst, GNUNET_h2s (&plc->pub_key_hash)); | ||
1802 | 1930 | ||
1803 | struct ClientListItem *cli = GNUNET_new (struct ClientListItem); | 1931 | struct ClientListItem *cli = GNUNET_new (struct ClientListItem); |
1804 | cli->client = client; | 1932 | cli->client = client; |
1805 | GNUNET_CONTAINER_DLL_insert (plc->clients_head, plc->clients_tail, cli); | 1933 | GNUNET_CONTAINER_DLL_insert (plc->clients_head, plc->clients_tail, cli); |
1934 | return GNUNET_OK; | ||
1935 | } | ||
1806 | 1936 | ||
1807 | c->place = plc; | 1937 | |
1808 | GNUNET_SERVICE_client_continue (client); | 1938 | static int |
1939 | check_client_guest_enter (void *cls, | ||
1940 | const struct GuestEnterRequest *greq) | ||
1941 | { | ||
1942 | return GNUNET_OK; | ||
1943 | } | ||
1944 | |||
1945 | |||
1946 | /** | ||
1947 | * Handle a connecting client entering a place as guest. | ||
1948 | */ | ||
1949 | static void | ||
1950 | handle_client_guest_enter (void *cls, | ||
1951 | const struct GuestEnterRequest *greq) | ||
1952 | { | ||
1953 | struct Client *c = cls; | ||
1954 | |||
1955 | if (GNUNET_SYSERR == client_guest_enter (c, greq)) | ||
1956 | { | ||
1957 | GNUNET_break (0); | ||
1958 | GNUNET_SERVICE_client_drop (c->client); | ||
1959 | return; | ||
1960 | } | ||
1961 | GNUNET_SERVICE_client_continue (c->client); | ||
1809 | } | 1962 | } |
1810 | 1963 | ||
1811 | 1964 | ||
@@ -1830,7 +1983,7 @@ gns_result_guest_enter (void *cls, uint32_t rd_count, | |||
1830 | { | 1983 | { |
1831 | struct GuestEnterByNameClosure *gcls = cls; | 1984 | struct GuestEnterByNameClosure *gcls = cls; |
1832 | struct Client *c = gcls->client; | 1985 | struct Client *c = gcls->client; |
1833 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 1986 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
1834 | "%p GNS result: %u records.\n", | 1987 | "%p GNS result: %u records.\n", |
1835 | c, rd_count); | 1988 | c, rd_count); |
1836 | 1989 | ||
@@ -1882,7 +2035,7 @@ gns_result_guest_enter (void *cls, uint32_t rd_count, | |||
1882 | p += relay_size; | 2035 | p += relay_size; |
1883 | GNUNET_memcpy (p, gcls->join_msg, join_msg_size); | 2036 | GNUNET_memcpy (p, gcls->join_msg, join_msg_size); |
1884 | 2037 | ||
1885 | handle_client_guest_enter (c, greq); | 2038 | client_guest_enter (c, greq); |
1886 | 2039 | ||
1887 | GNUNET_free (gcls->app_id); | 2040 | GNUNET_free (gcls->app_id); |
1888 | if (NULL != gcls->password) | 2041 | if (NULL != gcls->password) |
@@ -1960,118 +2113,7 @@ handle_client_guest_enter_by_name (void *cls, | |||
1960 | GNUNET_GNSRECORD_TYPE_PLACE, | 2113 | GNUNET_GNSRECORD_TYPE_PLACE, |
1961 | GNUNET_GNS_LO_DEFAULT, | 2114 | GNUNET_GNS_LO_DEFAULT, |
1962 | &gns_result_guest_enter, gcls); | 2115 | &gns_result_guest_enter, gcls); |
1963 | } | 2116 | GNUNET_SERVICE_client_continue (client); |
1964 | |||
1965 | |||
1966 | void | ||
1967 | app_notify_place (struct GNUNET_MessageHeader *msg, | ||
1968 | struct GNUNET_SERVICE_Client *client) | ||
1969 | { | ||
1970 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1971 | "%p Sending place notification of type %u to client.\n", | ||
1972 | client, ntohs (msg->type)); | ||
1973 | |||
1974 | uint16_t msg_size = ntohs (msg->size); | ||
1975 | struct AppPlaceMessage amsg; | ||
1976 | amsg.header.type = htons (GNUNET_MESSAGE_TYPE_SOCIAL_APP_PLACE); | ||
1977 | amsg.header.size = htons (sizeof (amsg)); | ||
1978 | // FIXME: also notify about not entered places | ||
1979 | amsg.place_state = GNUNET_SOCIAL_PLACE_STATE_ENTERED; | ||
1980 | |||
1981 | switch (ntohs (msg->type)) | ||
1982 | { | ||
1983 | case GNUNET_MESSAGE_TYPE_SOCIAL_HOST_ENTER: | ||
1984 | if (msg_size < sizeof (struct HostEnterRequest)) | ||
1985 | return; | ||
1986 | struct HostEnterRequest *hreq = (struct HostEnterRequest *) msg; | ||
1987 | amsg.is_host = GNUNET_YES; | ||
1988 | amsg.ego_pub_key = hreq->ego_pub_key; | ||
1989 | amsg.place_pub_key = hreq->place_pub_key; | ||
1990 | break; | ||
1991 | |||
1992 | case GNUNET_MESSAGE_TYPE_SOCIAL_GUEST_ENTER: | ||
1993 | if (msg_size < sizeof (struct GuestEnterRequest)) | ||
1994 | return; | ||
1995 | struct GuestEnterRequest *greq = (struct GuestEnterRequest *) msg; | ||
1996 | amsg.is_host = GNUNET_NO; | ||
1997 | amsg.ego_pub_key = greq->ego_pub_key; | ||
1998 | amsg.place_pub_key = greq->place_pub_key; | ||
1999 | break; | ||
2000 | |||
2001 | default: | ||
2002 | return; | ||
2003 | } | ||
2004 | |||
2005 | client_send_msg (client, &amsg.header); | ||
2006 | } | ||
2007 | |||
2008 | |||
2009 | void | ||
2010 | app_notify_place_end (struct GNUNET_SERVICE_Client *client) | ||
2011 | { | ||
2012 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
2013 | "%p Sending end of place list notification to client\n", | ||
2014 | client); | ||
2015 | |||
2016 | struct GNUNET_MessageHeader msg; | ||
2017 | msg.type = htons (GNUNET_MESSAGE_TYPE_SOCIAL_APP_PLACE_END); | ||
2018 | msg.size = htons (sizeof (msg)); | ||
2019 | |||
2020 | client_send_msg (client, &msg); | ||
2021 | } | ||
2022 | |||
2023 | |||
2024 | void | ||
2025 | app_notify_ego (struct Ego *ego, struct GNUNET_SERVICE_Client *client) | ||
2026 | { | ||
2027 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
2028 | "%p Sending ego notification to client: %s\n", | ||
2029 | client, ego->name); | ||
2030 | |||
2031 | size_t name_size = strlen (ego->name) + 1; | ||
2032 | struct AppEgoMessage *emsg = GNUNET_malloc (sizeof (*emsg) + name_size); | ||
2033 | emsg->header.type = htons (GNUNET_MESSAGE_TYPE_SOCIAL_APP_EGO); | ||
2034 | emsg->header.size = htons (sizeof (*emsg) + name_size); | ||
2035 | |||
2036 | GNUNET_CRYPTO_ecdsa_key_get_public (&ego->key, &emsg->ego_pub_key); | ||
2037 | GNUNET_memcpy (&emsg[1], ego->name, name_size); | ||
2038 | |||
2039 | client_send_msg (client, &emsg->header); | ||
2040 | GNUNET_free (emsg); | ||
2041 | } | ||
2042 | |||
2043 | |||
2044 | void | ||
2045 | app_notify_ego_end (struct GNUNET_SERVICE_Client *client) | ||
2046 | { | ||
2047 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
2048 | "%p Sending end of ego list notification to client\n", | ||
2049 | client); | ||
2050 | |||
2051 | struct GNUNET_MessageHeader msg; | ||
2052 | msg.type = htons (GNUNET_MESSAGE_TYPE_SOCIAL_APP_EGO_END); | ||
2053 | msg.size = htons (sizeof (msg)); | ||
2054 | |||
2055 | client_send_msg (client, &msg); | ||
2056 | } | ||
2057 | |||
2058 | |||
2059 | int | ||
2060 | app_place_entry_notify (void *cls, const struct GNUNET_HashCode *key, void *value) | ||
2061 | { | ||
2062 | struct GNUNET_MessageHeader * | ||
2063 | msg = GNUNET_CONTAINER_multihashmap_get (places, key); | ||
2064 | if (NULL != msg) | ||
2065 | app_notify_place (msg, cls); | ||
2066 | return GNUNET_YES; | ||
2067 | } | ||
2068 | |||
2069 | |||
2070 | int | ||
2071 | ego_entry (void *cls, const struct GNUNET_HashCode *key, void *value) | ||
2072 | { | ||
2073 | app_notify_ego (value, cls); | ||
2074 | return GNUNET_YES; | ||
2075 | } | 2117 | } |
2076 | 2118 | ||
2077 | 2119 | ||
@@ -2154,13 +2196,15 @@ handle_client_app_detach (void *cls, | |||
2154 | } | 2196 | } |
2155 | 2197 | ||
2156 | 2198 | ||
2157 | int | 2199 | static void |
2158 | app_places_entry_remove (void *cls, const struct GNUNET_HashCode *key, void *value) | 2200 | place_leave_cb (void *cls) |
2159 | { | 2201 | { |
2160 | struct Place *plc = cls; | 2202 | struct Place *plc = cls; |
2161 | const char *app_id = value; | 2203 | |
2162 | app_place_remove (app_id, &plc->ego_pub_key, &plc->pub_key); | 2204 | place_send_leave_ack (plc); |
2163 | return GNUNET_YES; | 2205 | (GNUNET_YES == plc->is_host) |
2206 | ? cleanup_host ((struct Host *) plc) | ||
2207 | : cleanup_guest ((struct Guest *) plc); | ||
2164 | } | 2208 | } |
2165 | 2209 | ||
2166 | 2210 | ||
@@ -2174,6 +2218,11 @@ handle_client_place_leave (void *cls, | |||
2174 | struct Client *c = cls; | 2218 | struct Client *c = cls; |
2175 | struct GNUNET_SERVICE_Client *client = c->client; | 2219 | struct GNUNET_SERVICE_Client *client = c->client; |
2176 | struct Place *plc = c->place; | 2220 | struct Place *plc = c->place; |
2221 | |||
2222 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
2223 | "got leave request from %s for place %s", | ||
2224 | plc->is_host? "host" : "slave", | ||
2225 | GNUNET_h2s (&plc->pub_key_hash)); | ||
2177 | if (NULL == plc) | 2226 | if (NULL == plc) |
2178 | { | 2227 | { |
2179 | GNUNET_break (0); | 2228 | GNUNET_break (0); |
@@ -2181,40 +2230,28 @@ handle_client_place_leave (void *cls, | |||
2181 | return; | 2230 | return; |
2182 | } | 2231 | } |
2183 | 2232 | ||
2184 | /* FIXME: remove all app subscriptions and leave this place */ | 2233 | if (GNUNET_YES != plc->is_disconnecting) |
2185 | |||
2186 | struct GNUNET_CONTAINER_MultiHashMap * | ||
2187 | place_apps = GNUNET_CONTAINER_multihashmap_get (places_apps, &plc->pub_key_hash); | ||
2188 | if (NULL != place_apps) | ||
2189 | { | 2234 | { |
2190 | GNUNET_CONTAINER_multihashmap_iterate (place_apps, app_places_entry_remove, plc); | 2235 | plc->is_disconnecting = GNUNET_YES; |
2191 | } | 2236 | if (plc->is_host) |
2192 | 2237 | { | |
2193 | /* FIXME: disconnect from the network, but keep local connection for history access */ | 2238 | struct Host *host = plc->host; |
2194 | 2239 | GNUNET_assert (NULL != host); | |
2195 | /* Disconnect all clients connected to the place */ | 2240 | GNUNET_PSYC_master_stop (host->master, GNUNET_NO, &place_leave_cb, plc); |
2196 | struct ClientListItem *cli = plc->clients_head, *next; | ||
2197 | while (NULL != cli) | ||
2198 | { | ||
2199 | GNUNET_CONTAINER_DLL_remove (plc->clients_head, plc->clients_tail, cli); | ||
2200 | GNUNET_SERVICE_client_drop (cli->client); | ||
2201 | next = cli->next; | ||
2202 | GNUNET_free (cli); | ||
2203 | cli = next; | ||
2204 | } | ||
2205 | |||
2206 | if (GNUNET_YES != plc->is_disconnected) | ||
2207 | { | ||
2208 | plc->is_disconnected = GNUNET_YES; | ||
2209 | if (NULL != plc->tmit_msgs_head) | ||
2210 | { /* Send pending messages to PSYC before cleanup. */ | ||
2211 | psyc_transmit_message (plc); | ||
2212 | } | 2241 | } |
2213 | else | 2242 | else |
2214 | { | 2243 | { |
2215 | cleanup_place (plc); | 2244 | struct Guest *guest = plc->guest; |
2245 | GNUNET_assert (NULL != guest); | ||
2246 | GNUNET_PSYC_slave_part (guest->slave, GNUNET_NO, &place_leave_cb, plc); | ||
2216 | } | 2247 | } |
2217 | } | 2248 | } |
2249 | else | ||
2250 | { | ||
2251 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | ||
2252 | "got leave request but place is already leaving\n"); | ||
2253 | } | ||
2254 | GNUNET_SERVICE_client_continue (client); | ||
2218 | } | 2255 | } |
2219 | 2256 | ||
2220 | 2257 | ||
@@ -2273,6 +2310,9 @@ handle_client_join_decision (void *cls, | |||
2273 | ? (struct GNUNET_PSYC_Message *) &dcsn[1] | 2310 | ? (struct GNUNET_PSYC_Message *) &dcsn[1] |
2274 | : NULL; | 2311 | : NULL; |
2275 | 2312 | ||
2313 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
2314 | "jcls.msg = %p\n", | ||
2315 | jcls.msg); | ||
2276 | struct GNUNET_HashCode slave_pub_hash; | 2316 | struct GNUNET_HashCode slave_pub_hash; |
2277 | GNUNET_CRYPTO_hash (&dcsn->slave_pub_key, sizeof (dcsn->slave_pub_key), | 2317 | GNUNET_CRYPTO_hash (&dcsn->slave_pub_key, sizeof (dcsn->slave_pub_key), |
2278 | &slave_pub_hash); | 2318 | &slave_pub_hash); |
@@ -2302,10 +2342,11 @@ handle_client_join_decision (void *cls, | |||
2302 | static void | 2342 | static void |
2303 | send_message_ack (struct Place *plc, struct GNUNET_SERVICE_Client *client) | 2343 | send_message_ack (struct Place *plc, struct GNUNET_SERVICE_Client *client) |
2304 | { | 2344 | { |
2305 | struct GNUNET_MessageHeader res; | 2345 | struct GNUNET_MQ_Envelope *env; |
2306 | res.size = htons (sizeof (res)); | 2346 | |
2307 | res.type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_ACK); | 2347 | env = GNUNET_MQ_msg_header (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_ACK); |
2308 | client_send_msg (client, &res); | 2348 | GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client), |
2349 | env); | ||
2309 | } | 2350 | } |
2310 | 2351 | ||
2311 | 2352 | ||
@@ -2437,7 +2478,6 @@ psyc_transmit_notify_data (void *cls, uint16_t *data_size, void *data) | |||
2437 | { | 2478 | { |
2438 | *data_size = 0; | 2479 | *data_size = 0; |
2439 | tmit_msg = psyc_transmit_queue_next_msg (plc, tmit_msg); | 2480 | tmit_msg = psyc_transmit_queue_next_msg (plc, tmit_msg); |
2440 | plc->is_disconnected = GNUNET_YES; | ||
2441 | GNUNET_SERVICE_client_drop (tmit_frag->client); | 2481 | GNUNET_SERVICE_client_drop (tmit_frag->client); |
2442 | GNUNET_SCHEDULER_add_now (&cleanup_place, plc); | 2482 | GNUNET_SCHEDULER_add_now (&cleanup_place, plc); |
2443 | return ret; | 2483 | return ret; |
@@ -2479,11 +2519,7 @@ psyc_transmit_notify_data (void *cls, uint16_t *data_size, void *data) | |||
2479 | { | 2519 | { |
2480 | psyc_transmit_message (plc); | 2520 | psyc_transmit_message (plc); |
2481 | } | 2521 | } |
2482 | else if (GNUNET_YES == plc->is_disconnected) | 2522 | /* FIXME: handle partial message (when still in_transmit) */ |
2483 | { | ||
2484 | /* FIXME: handle partial message (when still in_transmit) */ | ||
2485 | cleanup_place (plc); | ||
2486 | } | ||
2487 | } | 2523 | } |
2488 | return ret; | 2524 | return ret; |
2489 | } | 2525 | } |
@@ -2597,7 +2633,6 @@ psyc_transmit_notify_mod (void *cls, uint16_t *data_size, void *data, | |||
2597 | *data_size = 0; | 2633 | *data_size = 0; |
2598 | ret = GNUNET_SYSERR; | 2634 | ret = GNUNET_SYSERR; |
2599 | tmit_msg = psyc_transmit_queue_next_msg (plc, tmit_msg); | 2635 | tmit_msg = psyc_transmit_queue_next_msg (plc, tmit_msg); |
2600 | plc->is_disconnected = GNUNET_YES; | ||
2601 | GNUNET_SERVICE_client_drop (tmit_frag->client); | 2636 | GNUNET_SERVICE_client_drop (tmit_frag->client); |
2602 | GNUNET_SCHEDULER_add_now (&cleanup_place, plc); | 2637 | GNUNET_SCHEDULER_add_now (&cleanup_place, plc); |
2603 | } | 2638 | } |
@@ -2862,26 +2897,26 @@ psyc_transmit_queue_message (struct Place *plc, | |||
2862 | } | 2897 | } |
2863 | 2898 | ||
2864 | 2899 | ||
2865 | /** | 2900 | ///** |
2866 | * Cancel transmission of current message to PSYC. | 2901 | // * Cancel transmission of current message to PSYC. |
2867 | * | 2902 | // * |
2868 | * @param plc Place to send to. | 2903 | // * @param plc Place to send to. |
2869 | * @param client Client the message originates from. | 2904 | // * @param client Client the message originates from. |
2870 | */ | 2905 | // */ |
2871 | static void | 2906 | //static void |
2872 | psyc_transmit_cancel (struct Place *plc, struct GNUNET_SERVICE_Client *client) | 2907 | //psyc_transmit_cancel (struct Place *plc, struct GNUNET_SERVICE_Client *client) |
2873 | { | 2908 | //{ |
2874 | uint16_t type = GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_CANCEL; | 2909 | // uint16_t type = GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_CANCEL; |
2875 | 2910 | // | |
2876 | struct GNUNET_MessageHeader msg; | 2911 | // struct GNUNET_MessageHeader msg; |
2877 | msg.size = htons (sizeof (msg)); | 2912 | // msg.size = htons (sizeof (msg)); |
2878 | msg.type = htons (type); | 2913 | // msg.type = htons (type); |
2879 | 2914 | // | |
2880 | psyc_transmit_queue_message (plc, client, sizeof (msg), &msg, type, type, NULL); | 2915 | // psyc_transmit_queue_message (plc, client, sizeof (msg), &msg, type, type, NULL); |
2881 | psyc_transmit_message (plc); | 2916 | // psyc_transmit_message (plc); |
2882 | 2917 | // | |
2883 | /* FIXME: cleanup */ | 2918 | // /* FIXME: cleanup */ |
2884 | } | 2919 | //} |
2885 | 2920 | ||
2886 | 2921 | ||
2887 | static int | 2922 | static int |
@@ -2902,17 +2937,19 @@ handle_client_psyc_message (void *cls, | |||
2902 | struct Client *c = cls; | 2937 | struct Client *c = cls; |
2903 | struct GNUNET_SERVICE_Client *client = c->client; | 2938 | struct GNUNET_SERVICE_Client *client = c->client; |
2904 | struct Place *plc = c->place; | 2939 | struct Place *plc = c->place; |
2940 | int ret; | ||
2941 | |||
2905 | if (NULL == plc) | 2942 | if (NULL == plc) |
2906 | { | 2943 | { |
2944 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | ||
2945 | "received PSYC message for non-existing client %p\n", | ||
2946 | client); | ||
2907 | GNUNET_break (0); | 2947 | GNUNET_break (0); |
2908 | GNUNET_SERVICE_client_drop (client); | 2948 | GNUNET_SERVICE_client_drop (client); |
2909 | return; | 2949 | return; |
2910 | } | 2950 | } |
2911 | |||
2912 | int ret = GNUNET_SYSERR; | ||
2913 | |||
2914 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 2951 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
2915 | "%p Received message from client.\n", plc); | 2952 | "%p Received message of type %d from client.\n", plc, ntohs (msg->type)); |
2916 | GNUNET_PSYC_log_message (GNUNET_ERROR_TYPE_DEBUG, msg); | 2953 | GNUNET_PSYC_log_message (GNUNET_ERROR_TYPE_DEBUG, msg); |
2917 | 2954 | ||
2918 | if (GNUNET_YES != plc->is_ready) | 2955 | if (GNUNET_YES != plc->is_ready) |
@@ -2933,20 +2970,19 @@ handle_client_psyc_message (void *cls, | |||
2933 | "%p Received message with invalid payload size (%u) from client.\n", | 2970 | "%p Received message with invalid payload size (%u) from client.\n", |
2934 | plc, psize); | 2971 | plc, psize); |
2935 | GNUNET_break (0); | 2972 | GNUNET_break (0); |
2936 | psyc_transmit_cancel (plc, client); | ||
2937 | GNUNET_SERVICE_client_drop (client); | 2973 | GNUNET_SERVICE_client_drop (client); |
2938 | return; | 2974 | return; |
2939 | } | 2975 | } |
2940 | 2976 | ||
2941 | uint16_t first_ptype = 0, last_ptype = 0; | 2977 | uint16_t first_ptype = 0; |
2942 | if (GNUNET_SYSERR | 2978 | uint16_t last_ptype = 0; |
2943 | == GNUNET_PSYC_receive_check_parts (psize, (const char *) &msg[1], | 2979 | if (GNUNET_SYSERR == |
2944 | &first_ptype, &last_ptype)) | 2980 | GNUNET_PSYC_receive_check_parts (psize, (const char *) &msg[1], |
2981 | &first_ptype, &last_ptype)) | ||
2945 | { | 2982 | { |
2946 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 2983 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, |
2947 | "%p Received invalid message part from client.\n", plc); | 2984 | "%p Received invalid message part from client.\n", plc); |
2948 | GNUNET_break (0); | 2985 | GNUNET_break (0); |
2949 | psyc_transmit_cancel (plc, client); | ||
2950 | GNUNET_SERVICE_client_drop (client); | 2986 | GNUNET_SERVICE_client_drop (client); |
2951 | return; | 2987 | return; |
2952 | } | 2988 | } |
@@ -2963,20 +2999,19 @@ handle_client_psyc_message (void *cls, | |||
2963 | c->tmit_msg = NULL; | 2999 | c->tmit_msg = NULL; |
2964 | ret = psyc_transmit_message (plc); | 3000 | ret = psyc_transmit_message (plc); |
2965 | } | 3001 | } |
2966 | 3002 | else | |
3003 | { | ||
3004 | ret = GNUNET_SYSERR; | ||
3005 | } | ||
2967 | if (GNUNET_OK != ret) | 3006 | if (GNUNET_OK != ret) |
2968 | { | 3007 | { |
2969 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 3008 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, |
2970 | "%p Received invalid message part from client.\n", plc); | 3009 | "%p Received invalid message part from client.\n", plc); |
2971 | GNUNET_break (0); | 3010 | GNUNET_break (0); |
2972 | psyc_transmit_cancel (plc, client); | ||
2973 | ret = GNUNET_SYSERR; | ||
2974 | } | ||
2975 | |||
2976 | if (GNUNET_OK == ret) | ||
2977 | GNUNET_SERVICE_client_continue (client); | ||
2978 | else | ||
2979 | GNUNET_SERVICE_client_drop (client); | 3011 | GNUNET_SERVICE_client_drop (client); |
3012 | return; | ||
3013 | } | ||
3014 | GNUNET_SERVICE_client_continue (client); | ||
2980 | } | 3015 | } |
2981 | 3016 | ||
2982 | 3017 | ||
@@ -3006,7 +3041,7 @@ psyc_recv_history_message (void *cls, const struct GNUNET_PSYC_MessageHeader *ms | |||
3006 | GNUNET_memcpy (&res[1], msg, size); | 3041 | GNUNET_memcpy (&res[1], msg, size); |
3007 | 3042 | ||
3008 | /** @todo FIXME: send only to requesting client */ | 3043 | /** @todo FIXME: send only to requesting client */ |
3009 | place_send_msg (plc, &res->header); | 3044 | place_send_msg (plc, GNUNET_MQ_msg_copy (&res->header)); |
3010 | 3045 | ||
3011 | GNUNET_free (res); | 3046 | GNUNET_free (res); |
3012 | } | 3047 | } |
@@ -3108,29 +3143,24 @@ psyc_recv_state_var (void *cls, | |||
3108 | uint32_t value_size, | 3143 | uint32_t value_size, |
3109 | uint32_t full_value_size) | 3144 | uint32_t full_value_size) |
3110 | { | 3145 | { |
3146 | struct GNUNET_OperationResultMessage *result_msg; | ||
3147 | struct GNUNET_MQ_Envelope *env; | ||
3111 | struct OperationClosure *opcls = cls; | 3148 | struct OperationClosure *opcls = cls; |
3112 | struct Client *c = opcls->client; | 3149 | struct Client *c = opcls->client; |
3113 | struct Place *plc = c->place; | 3150 | struct Place *plc = c->place; |
3151 | uint16_t size = ntohs (mod->size); | ||
3114 | 3152 | ||
3115 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 3153 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
3116 | "%p Received state variable %s from PSYC\n", | 3154 | "%p Received state variable %s from PSYC\n", |
3117 | plc, name); | 3155 | plc, name); |
3118 | 3156 | env = GNUNET_MQ_msg_extra (result_msg, | |
3119 | uint16_t size = ntohs (mod->size); | 3157 | size, |
3120 | 3158 | GNUNET_MESSAGE_TYPE_PSYC_STATE_RESULT); | |
3121 | struct GNUNET_OperationResultMessage * | 3159 | result_msg->op_id = opcls->op_id; |
3122 | res = GNUNET_malloc (sizeof (*res) + size); | 3160 | result_msg->result_code = GNUNET_htonll (GNUNET_OK); |
3123 | res->header.size = htons (sizeof (*res) + size); | 3161 | GNUNET_memcpy (&result_msg[1], mod, size); |
3124 | res->header.type = htons (GNUNET_MESSAGE_TYPE_PSYC_STATE_RESULT); | ||
3125 | res->op_id = opcls->op_id; | ||
3126 | res->result_code = GNUNET_htonll (GNUNET_OK); | ||
3127 | |||
3128 | GNUNET_memcpy (&res[1], mod, size); | ||
3129 | |||
3130 | /** @todo FIXME: send only to requesting client */ | 3162 | /** @todo FIXME: send only to requesting client */ |
3131 | place_send_msg (plc, &res->header); | 3163 | place_send_msg (plc, env); |
3132 | |||
3133 | GNUNET_free (res); | ||
3134 | } | 3164 | } |
3135 | 3165 | ||
3136 | 3166 | ||
@@ -3184,7 +3214,7 @@ handle_client_state_get (void *cls, | |||
3184 | uint16_t size = ntohs (req->header.size); | 3214 | uint16_t size = ntohs (req->header.size); |
3185 | const char *name = (const char *) &req[1]; | 3215 | const char *name = (const char *) &req[1]; |
3186 | 3216 | ||
3187 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 3217 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
3188 | "%p State get #%" PRIu64 ": %s\n", | 3218 | "%p State get #%" PRIu64 ": %s\n", |
3189 | plc, GNUNET_ntohll (req->op_id), name); | 3219 | plc, GNUNET_ntohll (req->op_id), name); |
3190 | 3220 | ||
@@ -3382,7 +3412,7 @@ path_basename (const char *path) | |||
3382 | if (NULL != basename) | 3412 | if (NULL != basename) |
3383 | basename++; | 3413 | basename++; |
3384 | 3414 | ||
3385 | if (NULL == basename || '\0' == basename) | 3415 | if (NULL == basename || '\0' == *basename) |
3386 | return NULL; | 3416 | return NULL; |
3387 | 3417 | ||
3388 | return basename; | 3418 | return basename; |
@@ -3468,7 +3498,10 @@ file_place_load (void *cls, const char *place_filename) | |||
3468 | return GNUNET_OK; | 3498 | return GNUNET_OK; |
3469 | } | 3499 | } |
3470 | 3500 | ||
3471 | app_place_add (plcls->app_id, ereq); | 3501 | if (GNUNET_SYSERR == app_place_add (plcls->app_id, ereq)) |
3502 | { | ||
3503 | GNUNET_assert (0); | ||
3504 | } | ||
3472 | GNUNET_free (ereq); | 3505 | GNUNET_free (ereq); |
3473 | return GNUNET_OK; | 3506 | return GNUNET_OK; |
3474 | } | 3507 | } |
@@ -3523,6 +3556,10 @@ identity_recv_ego (void *cls, struct GNUNET_IDENTITY_Ego *id_ego, | |||
3523 | if (NULL == id_ego) // end of initial list of egos | 3556 | if (NULL == id_ego) // end of initial list of egos |
3524 | return; | 3557 | return; |
3525 | 3558 | ||
3559 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
3560 | "social service received ego %s\n", | ||
3561 | name); | ||
3562 | |||
3526 | struct GNUNET_CRYPTO_EcdsaPublicKey ego_pub_key; | 3563 | struct GNUNET_CRYPTO_EcdsaPublicKey ego_pub_key; |
3527 | GNUNET_IDENTITY_ego_get_public_key (id_ego, &ego_pub_key); | 3564 | GNUNET_IDENTITY_ego_get_public_key (id_ego, &ego_pub_key); |
3528 | 3565 | ||
@@ -3571,6 +3608,9 @@ run (void *cls, | |||
3571 | const struct GNUNET_CONFIGURATION_Handle *c, | 3608 | const struct GNUNET_CONFIGURATION_Handle *c, |
3572 | struct GNUNET_SERVICE_Handle *svc) | 3609 | struct GNUNET_SERVICE_Handle *svc) |
3573 | { | 3610 | { |
3611 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
3612 | "starting social service\n"); | ||
3613 | |||
3574 | cfg = c; | 3614 | cfg = c; |
3575 | service = svc; | 3615 | service = svc; |
3576 | GNUNET_CRYPTO_get_peer_identity (cfg, &this_peer); | 3616 | GNUNET_CRYPTO_get_peer_identity (cfg, &this_peer); |
@@ -3583,7 +3623,7 @@ run (void *cls, | |||
3583 | apps = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_NO); | 3623 | apps = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_NO); |
3584 | places = GNUNET_CONTAINER_multihashmap_create(1, GNUNET_NO); | 3624 | places = GNUNET_CONTAINER_multihashmap_create(1, GNUNET_NO); |
3585 | apps_places = GNUNET_CONTAINER_multihashmap_create(1, GNUNET_NO); | 3625 | apps_places = GNUNET_CONTAINER_multihashmap_create(1, GNUNET_NO); |
3586 | places_apps = GNUNET_CONTAINER_multihashmap_create(1, GNUNET_NO); | 3626 | //places_apps = GNUNET_CONTAINER_multihashmap_create(1, GNUNET_NO); |
3587 | 3627 | ||
3588 | id = GNUNET_IDENTITY_connect (cfg, &identity_recv_ego, NULL); | 3628 | id = GNUNET_IDENTITY_connect (cfg, &identity_recv_ego, NULL); |
3589 | gns = GNUNET_GNS_connect (cfg); | 3629 | gns = GNUNET_GNS_connect (cfg); |
diff --git a/src/social/gnunet-social.c b/src/social/gnunet-social.c index de680b11c..12c5bf2e1 100644 --- a/src/social/gnunet-social.c +++ b/src/social/gnunet-social.c | |||
@@ -283,7 +283,7 @@ exit_fail () | |||
283 | static void | 283 | static void |
284 | host_left (void *cls) | 284 | host_left (void *cls) |
285 | { | 285 | { |
286 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 286 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
287 | "The host has left the place.\n"); | 287 | "The host has left the place.\n"); |
288 | exit_success (); | 288 | exit_success (); |
289 | } | 289 | } |
@@ -309,7 +309,7 @@ host_leave () | |||
309 | static void | 309 | static void |
310 | guest_left (void *cls) | 310 | guest_left (void *cls) |
311 | { | 311 | { |
312 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 312 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
313 | "Guest has left the place.\n"); | 313 | "Guest has left the place.\n"); |
314 | } | 314 | } |
315 | 315 | ||
@@ -518,7 +518,7 @@ look_var (void *cls, | |||
518 | uint32_t value_size, | 518 | uint32_t value_size, |
519 | uint32_t full_value_size) | 519 | uint32_t full_value_size) |
520 | { | 520 | { |
521 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 521 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
522 | "Received var: %s\n%.*s\n", | 522 | "Received var: %s\n%.*s\n", |
523 | name, value_size, (const char *) value); | 523 | name, value_size, (const char *) value); |
524 | } | 524 | } |
@@ -558,7 +558,7 @@ slicer_recv_method (void *cls, | |||
558 | const char *method_name) | 558 | const char *method_name) |
559 | { | 559 | { |
560 | method_received = method_name; | 560 | method_received = method_name; |
561 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 561 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
562 | "Received method for message ID %" PRIu64 ":\n" | 562 | "Received method for message ID %" PRIu64 ":\n" |
563 | "%s (flags: %x)\n", | 563 | "%s (flags: %x)\n", |
564 | message_id, method_name, ntohl (meth->flags)); | 564 | message_id, method_name, ntohl (meth->flags)); |
@@ -584,7 +584,7 @@ slicer_recv_modifier (void *cls, | |||
584 | uint16_t full_value_size) | 584 | uint16_t full_value_size) |
585 | { | 585 | { |
586 | #if 0 | 586 | #if 0 |
587 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 587 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
588 | "Received modifier for message ID %" PRIu64 ":\n" | 588 | "Received modifier for message ID %" PRIu64 ":\n" |
589 | "%c%s: %.*s (size: %u)\n", | 589 | "%c%s: %.*s (size: %u)\n", |
590 | message_id, oper, name, value_size, (const char *) value, value_size); | 590 | message_id, oper, name, value_size, (const char *) value, value_size); |
@@ -608,7 +608,7 @@ slicer_recv_data (void *cls, | |||
608 | uint16_t data_size) | 608 | uint16_t data_size) |
609 | { | 609 | { |
610 | #if 0 | 610 | #if 0 |
611 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 611 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
612 | "Received data for message ID %" PRIu64 ":\n" | 612 | "Received data for message ID %" PRIu64 ":\n" |
613 | "%.*s\n", | 613 | "%.*s\n", |
614 | message_id, data_size, (const char *) data); | 614 | message_id, data_size, (const char *) data); |
@@ -631,7 +631,7 @@ slicer_recv_eom (void *cls, | |||
631 | uint8_t is_cancelled) | 631 | uint8_t is_cancelled) |
632 | { | 632 | { |
633 | printf(".\n"); | 633 | printf(".\n"); |
634 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 634 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
635 | "Received end of message ID %" PRIu64 | 635 | "Received end of message ID %" PRIu64 |
636 | ", cancelled: %u\n", | 636 | ", cancelled: %u\n", |
637 | message_id, is_cancelled); | 637 | message_id, is_cancelled); |
@@ -668,7 +668,7 @@ guest_recv_entry_decision (void *cls, | |||
668 | int is_admitted, | 668 | int is_admitted, |
669 | const struct GNUNET_PSYC_Message *entry_msg) | 669 | const struct GNUNET_PSYC_Message *entry_msg) |
670 | { | 670 | { |
671 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 671 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
672 | "Guest received entry decision %d\n", | 672 | "Guest received entry decision %d\n", |
673 | is_admitted); | 673 | is_admitted); |
674 | 674 | ||
@@ -683,7 +683,7 @@ guest_recv_entry_decision (void *cls, | |||
683 | GNUNET_PSYC_message_parse (pmsg, &method_name, env, &data, &data_size); | 683 | GNUNET_PSYC_message_parse (pmsg, &method_name, env, &data, &data_size); |
684 | GNUNET_free (pmsg); | 684 | GNUNET_free (pmsg); |
685 | 685 | ||
686 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 686 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
687 | "%s\n%.*s\n", | 687 | "%s\n%.*s\n", |
688 | method_name, data_size, (const char *) data); | 688 | method_name, data_size, (const char *) data); |
689 | } | 689 | } |
@@ -704,7 +704,7 @@ guest_recv_local_enter (void *cls, int result, | |||
704 | uint64_t max_message_id) | 704 | uint64_t max_message_id) |
705 | { | 705 | { |
706 | char *pub_str = GNUNET_CRYPTO_eddsa_public_key_to_string (pub_key); | 706 | char *pub_str = GNUNET_CRYPTO_eddsa_public_key_to_string (pub_key); |
707 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 707 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
708 | "Guest entered local place: %s, max_message_id: %" PRIu64 "\n", | 708 | "Guest entered local place: %s, max_message_id: %" PRIu64 "\n", |
709 | pub_str, max_message_id); | 709 | pub_str, max_message_id); |
710 | GNUNET_free (pub_str); | 710 | GNUNET_free (pub_str); |
@@ -802,7 +802,7 @@ host_answer_door (void *cls, | |||
802 | char * | 802 | char * |
803 | nym_str = GNUNET_CRYPTO_ecdsa_public_key_to_string (nym_key); | 803 | nym_str = GNUNET_CRYPTO_ecdsa_public_key_to_string (nym_key); |
804 | 804 | ||
805 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 805 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
806 | "Entry request: %s\n", nym_str); | 806 | "Entry request: %s\n", nym_str); |
807 | GNUNET_free (nym_str); | 807 | GNUNET_free (nym_str); |
808 | 808 | ||
@@ -840,7 +840,7 @@ host_farewell (void *cls, | |||
840 | char * | 840 | char * |
841 | nym_str = GNUNET_CRYPTO_ecdsa_public_key_to_string (nym_key); | 841 | nym_str = GNUNET_CRYPTO_ecdsa_public_key_to_string (nym_key); |
842 | 842 | ||
843 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 843 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
844 | "Farewell: %s\n", nym_str); | 844 | "Farewell: %s\n", nym_str); |
845 | GNUNET_free (nym_str); | 845 | GNUNET_free (nym_str); |
846 | } | 846 | } |
@@ -856,7 +856,7 @@ host_entered (void *cls, int result, | |||
856 | { | 856 | { |
857 | place_pub_key = *pub_key; | 857 | place_pub_key = *pub_key; |
858 | char *pub_str = GNUNET_CRYPTO_eddsa_public_key_to_string (pub_key); | 858 | char *pub_str = GNUNET_CRYPTO_eddsa_public_key_to_string (pub_key); |
859 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 859 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
860 | "Host entered: %s, max_message_id: %" PRIu64 "\n", | 860 | "Host entered: %s, max_message_id: %" PRIu64 "\n", |
861 | pub_str, max_message_id); | 861 | pub_str, max_message_id); |
862 | GNUNET_free (pub_str); | 862 | GNUNET_free (pub_str); |
diff --git a/src/social/social_api.c b/src/social/social_api.c index d57d16cfb..89843831b 100644 --- a/src/social/social_api.c +++ b/src/social/social_api.c | |||
@@ -183,6 +183,7 @@ struct GNUNET_SOCIAL_Place | |||
183 | */ | 183 | */ |
184 | struct GNUNET_PSYC_Slicer *slicer; | 184 | struct GNUNET_PSYC_Slicer *slicer; |
185 | 185 | ||
186 | // FIXME: do we need is_disconnecing like on the psyc and multicast APIs? | ||
186 | /** | 187 | /** |
187 | * Function called after disconnected from the service. | 188 | * Function called after disconnected from the service. |
188 | */ | 189 | */ |
@@ -371,6 +372,68 @@ struct ZoneAddNymHandle | |||
371 | }; | 372 | }; |
372 | 373 | ||
373 | 374 | ||
375 | /*** CLEANUP / DISCONNECT ***/ | ||
376 | |||
377 | |||
378 | static void | ||
379 | host_cleanup (struct GNUNET_SOCIAL_Host *hst) | ||
380 | { | ||
381 | if (NULL != hst->slicer) | ||
382 | { | ||
383 | GNUNET_PSYC_slicer_destroy (hst->slicer); | ||
384 | hst->slicer = NULL; | ||
385 | } | ||
386 | GNUNET_free (hst); | ||
387 | } | ||
388 | |||
389 | |||
390 | static void | ||
391 | guest_cleanup (struct GNUNET_SOCIAL_Guest *gst) | ||
392 | { | ||
393 | GNUNET_free (gst); | ||
394 | } | ||
395 | |||
396 | |||
397 | static void | ||
398 | place_cleanup (struct GNUNET_SOCIAL_Place *plc) | ||
399 | { | ||
400 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
401 | "cleaning up place %p\n", | ||
402 | plc); | ||
403 | if (NULL != plc->tmit) | ||
404 | { | ||
405 | GNUNET_PSYC_transmit_destroy (plc->tmit); | ||
406 | plc->tmit = NULL; | ||
407 | } | ||
408 | if (NULL != plc->connect_env) | ||
409 | { | ||
410 | GNUNET_MQ_discard (plc->connect_env); | ||
411 | plc->connect_env = NULL; | ||
412 | } | ||
413 | if (NULL != plc->mq) | ||
414 | { | ||
415 | GNUNET_MQ_destroy (plc->mq); | ||
416 | plc->mq = NULL; | ||
417 | } | ||
418 | if (NULL != plc->disconnect_cb) | ||
419 | { | ||
420 | plc->disconnect_cb (plc->disconnect_cls); | ||
421 | plc->disconnect_cb = NULL; | ||
422 | } | ||
423 | |||
424 | (GNUNET_YES == plc->is_host) | ||
425 | ? host_cleanup ((struct GNUNET_SOCIAL_Host *) plc) | ||
426 | : guest_cleanup ((struct GNUNET_SOCIAL_Guest *) plc); | ||
427 | } | ||
428 | |||
429 | |||
430 | static void | ||
431 | place_disconnect (struct GNUNET_SOCIAL_Place *plc) | ||
432 | { | ||
433 | place_cleanup (plc); | ||
434 | } | ||
435 | |||
436 | |||
374 | /*** NYM ***/ | 437 | /*** NYM ***/ |
375 | 438 | ||
376 | static struct GNUNET_SOCIAL_Nym * | 439 | static struct GNUNET_SOCIAL_Nym * |
@@ -428,7 +491,7 @@ host_recv_notice_place_leave_method (void *cls, | |||
428 | 491 | ||
429 | struct GNUNET_SOCIAL_Nym *nym = nym_get_or_create (&msg->slave_pub_key); | 492 | struct GNUNET_SOCIAL_Nym *nym = nym_get_or_create (&msg->slave_pub_key); |
430 | 493 | ||
431 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 494 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
432 | "Host received method for message ID %" PRIu64 " from nym %s: %s\n", | 495 | "Host received method for message ID %" PRIu64 " from nym %s: %s\n", |
433 | message_id, GNUNET_h2s (&nym->pub_key_hash), method_name); | 496 | message_id, GNUNET_h2s (&nym->pub_key_hash), method_name); |
434 | 497 | ||
@@ -436,7 +499,7 @@ host_recv_notice_place_leave_method (void *cls, | |||
436 | hst->notice_place_leave_env = GNUNET_PSYC_env_create (); | 499 | hst->notice_place_leave_env = GNUNET_PSYC_env_create (); |
437 | 500 | ||
438 | char *str = GNUNET_CRYPTO_ecdsa_public_key_to_string (&hst->notice_place_leave_nym->pub_key); | 501 | char *str = GNUNET_CRYPTO_ecdsa_public_key_to_string (&hst->notice_place_leave_nym->pub_key); |
439 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 502 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
440 | "_notice_place_leave: got method from nym %s (%s).\n", | 503 | "_notice_place_leave: got method from nym %s (%s).\n", |
441 | GNUNET_h2s (&hst->notice_place_leave_nym->pub_key_hash), str); | 504 | GNUNET_h2s (&hst->notice_place_leave_nym->pub_key_hash), str); |
442 | GNUNET_free (str); | 505 | GNUNET_free (str); |
@@ -458,7 +521,7 @@ host_recv_notice_place_leave_modifier (void *cls, | |||
458 | if (NULL == hst->notice_place_leave_env) | 521 | if (NULL == hst->notice_place_leave_env) |
459 | return; | 522 | return; |
460 | 523 | ||
461 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 524 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
462 | "Host received modifier for _notice_place_leave message with ID %" PRIu64 ":\n" | 525 | "Host received modifier for _notice_place_leave message with ID %" PRIu64 ":\n" |
463 | "%c%s: %.*s\n", | 526 | "%c%s: %.*s\n", |
464 | message_id, oper, name, value_size, (const char *) value); | 527 | message_id, oper, name, value_size, (const char *) value); |
@@ -485,7 +548,7 @@ host_recv_notice_place_leave_eom (void *cls, | |||
485 | return; | 548 | return; |
486 | 549 | ||
487 | char *str = GNUNET_CRYPTO_ecdsa_public_key_to_string (&hst->notice_place_leave_nym->pub_key); | 550 | char *str = GNUNET_CRYPTO_ecdsa_public_key_to_string (&hst->notice_place_leave_nym->pub_key); |
488 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 551 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
489 | "_notice_place_leave: got EOM from nym %s (%s).\n", | 552 | "_notice_place_leave: got EOM from nym %s (%s).\n", |
490 | GNUNET_h2s (&hst->notice_place_leave_nym->pub_key_hash), str); | 553 | GNUNET_h2s (&hst->notice_place_leave_nym->pub_key_hash), str); |
491 | GNUNET_free (str); | 554 | GNUNET_free (str); |
@@ -1015,100 +1078,24 @@ handle_app_place_end (void *cls, | |||
1015 | } | 1078 | } |
1016 | 1079 | ||
1017 | 1080 | ||
1018 | /*** CLEANUP / DISCONNECT ***/ | 1081 | /** |
1019 | 1082 | * Handler for a #GNUNET_MESSAGE_TYPE_SOCIAL_PLACE_LEAVE_ACK message received | |
1020 | 1083 | * from the social service. | |
1021 | static void | 1084 | * |
1022 | host_cleanup (struct GNUNET_SOCIAL_Host *hst) | 1085 | * @param cls the place of type `struct GNUNET_SOCIAL_Place` |
1023 | { | 1086 | * @param msg the message received from the service |
1024 | if (NULL != hst->slicer) | 1087 | */ |
1025 | { | ||
1026 | GNUNET_PSYC_slicer_destroy (hst->slicer); | ||
1027 | hst->slicer = NULL; | ||
1028 | } | ||
1029 | GNUNET_free (hst); | ||
1030 | } | ||
1031 | |||
1032 | |||
1033 | static void | 1088 | static void |
1034 | guest_cleanup (struct GNUNET_SOCIAL_Guest *gst) | 1089 | handle_place_leave_ack (void *cls, |
1090 | const struct GNUNET_MessageHeader *msg) | ||
1035 | { | 1091 | { |
1036 | GNUNET_free (gst); | 1092 | struct GNUNET_SOCIAL_Place *plc = cls; |
1037 | } | ||
1038 | |||
1039 | 1093 | ||
1040 | static void | ||
1041 | place_cleanup (struct GNUNET_SOCIAL_Place *plc) | ||
1042 | { | ||
1043 | struct GNUNET_HashCode place_pub_hash; | ||
1044 | GNUNET_CRYPTO_hash (&plc->pub_key, sizeof (plc->pub_key), &place_pub_hash); | ||
1045 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 1094 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
1046 | "%s place cleanup: %s\n", | 1095 | "%s left place %p\n", |
1047 | GNUNET_YES == plc->is_host ? "host" : "guest", | 1096 | plc->is_host ? "host" : "guest", |
1048 | GNUNET_h2s (&place_pub_hash)); | 1097 | plc); |
1049 | 1098 | place_disconnect (plc); | |
1050 | if (NULL != plc->tmit) | ||
1051 | { | ||
1052 | GNUNET_PSYC_transmit_destroy (plc->tmit); | ||
1053 | plc->tmit = NULL; | ||
1054 | } | ||
1055 | if (NULL != plc->connect_env) | ||
1056 | { | ||
1057 | GNUNET_MQ_discard (plc->connect_env); | ||
1058 | plc->connect_env = NULL; | ||
1059 | } | ||
1060 | if (NULL != plc->mq) | ||
1061 | { | ||
1062 | GNUNET_MQ_destroy (plc->mq); | ||
1063 | plc->mq = NULL; | ||
1064 | } | ||
1065 | if (NULL != plc->disconnect_cb) | ||
1066 | { | ||
1067 | plc->disconnect_cb (plc->disconnect_cls); | ||
1068 | plc->disconnect_cb = NULL; | ||
1069 | } | ||
1070 | |||
1071 | (GNUNET_YES == plc->is_host) | ||
1072 | ? host_cleanup ((struct GNUNET_SOCIAL_Host *) plc) | ||
1073 | : guest_cleanup ((struct GNUNET_SOCIAL_Guest *) plc); | ||
1074 | } | ||
1075 | |||
1076 | |||
1077 | void | ||
1078 | place_disconnect (struct GNUNET_SOCIAL_Place *plc, | ||
1079 | GNUNET_ContinuationCallback cb, | ||
1080 | void *cls) | ||
1081 | { | ||
1082 | plc->disconnect_cb = cb; | ||
1083 | plc->disconnect_cls = cls; | ||
1084 | |||
1085 | if (NULL != plc->mq) | ||
1086 | { | ||
1087 | struct GNUNET_MQ_Envelope *env = GNUNET_MQ_get_last_envelope (plc->mq); | ||
1088 | if (NULL != env) | ||
1089 | { | ||
1090 | GNUNET_MQ_notify_sent (env, (GNUNET_SCHEDULER_TaskCallback) place_cleanup, plc); | ||
1091 | } | ||
1092 | else | ||
1093 | { | ||
1094 | place_cleanup (plc); | ||
1095 | } | ||
1096 | } | ||
1097 | else | ||
1098 | { | ||
1099 | place_cleanup (plc); | ||
1100 | } | ||
1101 | } | ||
1102 | |||
1103 | |||
1104 | void | ||
1105 | place_leave (struct GNUNET_SOCIAL_Place *plc) | ||
1106 | { | ||
1107 | struct GNUNET_MessageHeader *msg; | ||
1108 | struct GNUNET_MQ_Envelope * | ||
1109 | env = GNUNET_MQ_msg (msg, GNUNET_MESSAGE_TYPE_SOCIAL_PLACE_LEAVE); | ||
1110 | |||
1111 | GNUNET_MQ_send (plc->mq, env); | ||
1112 | } | 1099 | } |
1113 | 1100 | ||
1114 | 1101 | ||
@@ -1168,6 +1155,10 @@ host_connect (struct GNUNET_SOCIAL_Host *hst) | |||
1168 | GNUNET_MESSAGE_TYPE_SOCIAL_HOST_ENTER_ACK, | 1155 | GNUNET_MESSAGE_TYPE_SOCIAL_HOST_ENTER_ACK, |
1169 | struct HostEnterAck, | 1156 | struct HostEnterAck, |
1170 | hst), | 1157 | hst), |
1158 | GNUNET_MQ_hd_fixed_size (place_leave_ack, | ||
1159 | GNUNET_MESSAGE_TYPE_SOCIAL_PLACE_LEAVE_ACK, | ||
1160 | struct GNUNET_MessageHeader, | ||
1161 | plc), | ||
1171 | GNUNET_MQ_hd_var_size (host_enter_request, | 1162 | GNUNET_MQ_hd_var_size (host_enter_request, |
1172 | GNUNET_MESSAGE_TYPE_PSYC_JOIN_REQUEST, | 1163 | GNUNET_MESSAGE_TYPE_PSYC_JOIN_REQUEST, |
1173 | struct GNUNET_PSYC_JoinRequestMessage, | 1164 | struct GNUNET_PSYC_JoinRequestMessage, |
@@ -1516,6 +1507,9 @@ GNUNET_SOCIAL_host_announce (struct GNUNET_SOCIAL_Host *hst, | |||
1516 | void *notify_data_cls, | 1507 | void *notify_data_cls, |
1517 | enum GNUNET_SOCIAL_AnnounceFlags flags) | 1508 | enum GNUNET_SOCIAL_AnnounceFlags flags) |
1518 | { | 1509 | { |
1510 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1511 | "PSYC_transmit_message for host, method: %s\n", | ||
1512 | method_name); | ||
1519 | if (GNUNET_OK == | 1513 | if (GNUNET_OK == |
1520 | GNUNET_PSYC_transmit_message (hst->plc.tmit, method_name, env, | 1514 | GNUNET_PSYC_transmit_message (hst->plc.tmit, method_name, env, |
1521 | NULL, notify_data, notify_data_cls, flags)) | 1515 | NULL, notify_data, notify_data_cls, flags)) |
@@ -1580,7 +1574,11 @@ GNUNET_SOCIAL_host_disconnect (struct GNUNET_SOCIAL_Host *hst, | |||
1580 | GNUNET_ContinuationCallback disconnect_cb, | 1574 | GNUNET_ContinuationCallback disconnect_cb, |
1581 | void *cls) | 1575 | void *cls) |
1582 | { | 1576 | { |
1583 | place_disconnect (&hst->plc, disconnect_cb, cls); | 1577 | struct GNUNET_SOCIAL_Place *plc = &hst->plc; |
1578 | |||
1579 | plc->disconnect_cb = disconnect_cb; | ||
1580 | plc->disconnect_cls = cls; | ||
1581 | place_disconnect (plc); | ||
1584 | } | 1582 | } |
1585 | 1583 | ||
1586 | 1584 | ||
@@ -1607,10 +1605,15 @@ GNUNET_SOCIAL_host_leave (struct GNUNET_SOCIAL_Host *hst, | |||
1607 | GNUNET_ContinuationCallback disconnect_cb, | 1605 | GNUNET_ContinuationCallback disconnect_cb, |
1608 | void *cls) | 1606 | void *cls) |
1609 | { | 1607 | { |
1608 | struct GNUNET_MQ_Envelope *envelope; | ||
1609 | |||
1610 | GNUNET_SOCIAL_host_announce (hst, "_notice_place_closing", env, NULL, NULL, | 1610 | GNUNET_SOCIAL_host_announce (hst, "_notice_place_closing", env, NULL, NULL, |
1611 | GNUNET_SOCIAL_ANNOUNCE_NONE); | 1611 | GNUNET_SOCIAL_ANNOUNCE_NONE); |
1612 | place_leave (&hst->plc); | 1612 | hst->plc.disconnect_cb = disconnect_cb; |
1613 | GNUNET_SOCIAL_host_disconnect (hst, disconnect_cb, cls); | 1613 | hst->plc.disconnect_cls = cls; |
1614 | envelope = GNUNET_MQ_msg_header (GNUNET_MESSAGE_TYPE_SOCIAL_PLACE_LEAVE); | ||
1615 | GNUNET_MQ_send (hst->plc.mq, | ||
1616 | envelope); | ||
1614 | } | 1617 | } |
1615 | 1618 | ||
1616 | 1619 | ||
@@ -1670,6 +1673,10 @@ guest_connect (struct GNUNET_SOCIAL_Guest *gst) | |||
1670 | GNUNET_MESSAGE_TYPE_SOCIAL_GUEST_ENTER_ACK, | 1673 | GNUNET_MESSAGE_TYPE_SOCIAL_GUEST_ENTER_ACK, |
1671 | struct GNUNET_PSYC_CountersResultMessage, | 1674 | struct GNUNET_PSYC_CountersResultMessage, |
1672 | gst), | 1675 | gst), |
1676 | GNUNET_MQ_hd_fixed_size (place_leave_ack, | ||
1677 | GNUNET_MESSAGE_TYPE_SOCIAL_PLACE_LEAVE_ACK, | ||
1678 | struct GNUNET_MessageHeader, | ||
1679 | plc), | ||
1673 | GNUNET_MQ_hd_var_size (guest_enter_decision, | 1680 | GNUNET_MQ_hd_var_size (guest_enter_decision, |
1674 | GNUNET_MESSAGE_TYPE_PSYC_JOIN_DECISION, | 1681 | GNUNET_MESSAGE_TYPE_PSYC_JOIN_DECISION, |
1675 | struct GNUNET_PSYC_JoinDecisionMessage, | 1682 | struct GNUNET_PSYC_JoinDecisionMessage, |
@@ -1896,6 +1903,64 @@ GNUNET_SOCIAL_guest_enter_by_name (const struct GNUNET_SOCIAL_App *app, | |||
1896 | } | 1903 | } |
1897 | 1904 | ||
1898 | 1905 | ||
1906 | struct ReconnectContext | ||
1907 | { | ||
1908 | struct GNUNET_SOCIAL_Guest *guest; | ||
1909 | int *result; | ||
1910 | int64_t *max_message_id; | ||
1911 | GNUNET_SOCIAL_GuestEnterCallback enter_cb; | ||
1912 | void *enter_cls; | ||
1913 | }; | ||
1914 | |||
1915 | |||
1916 | static void | ||
1917 | guest_enter_reconnect_cb (void *cls, | ||
1918 | int result, | ||
1919 | const struct GNUNET_CRYPTO_EddsaPublicKey *place_pub_key, | ||
1920 | uint64_t max_message_id) | ||
1921 | { | ||
1922 | struct ReconnectContext *reconnect_ctx = cls; | ||
1923 | |||
1924 | GNUNET_assert (NULL != reconnect_ctx); | ||
1925 | reconnect_ctx->result = GNUNET_new (int); | ||
1926 | *(reconnect_ctx->result) = result; | ||
1927 | reconnect_ctx->max_message_id = GNUNET_new (int64_t); | ||
1928 | *(reconnect_ctx->max_message_id) = max_message_id; | ||
1929 | } | ||
1930 | |||
1931 | |||
1932 | static void | ||
1933 | guest_entry_dcsn_reconnect_cb (void *cls, | ||
1934 | int is_admitted, | ||
1935 | const struct GNUNET_PSYC_Message *entry_resp) | ||
1936 | { | ||
1937 | struct ReconnectContext *reconnect_ctx = cls; | ||
1938 | struct GNUNET_SOCIAL_Guest *gst = reconnect_ctx->guest; | ||
1939 | |||
1940 | GNUNET_assert (NULL != reconnect_ctx); | ||
1941 | GNUNET_assert (NULL != reconnect_ctx->result); | ||
1942 | GNUNET_assert (NULL != reconnect_ctx->max_message_id); | ||
1943 | if (GNUNET_YES != is_admitted) | ||
1944 | { | ||
1945 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | ||
1946 | "Guest was rejected after calling " | ||
1947 | "GNUNET_SOCIAL_guest_enter_reconnect ()\n"); | ||
1948 | } | ||
1949 | else if (NULL != reconnect_ctx->enter_cb) | ||
1950 | { | ||
1951 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1952 | "guest reconnected!\n"); | ||
1953 | reconnect_ctx->enter_cb (reconnect_ctx->enter_cls, | ||
1954 | *(reconnect_ctx->result), | ||
1955 | &gst->plc.pub_key, | ||
1956 | *(reconnect_ctx->max_message_id)); | ||
1957 | } | ||
1958 | GNUNET_free (reconnect_ctx->result); | ||
1959 | GNUNET_free (reconnect_ctx->max_message_id); | ||
1960 | GNUNET_free (reconnect_ctx); | ||
1961 | } | ||
1962 | |||
1963 | |||
1899 | /** | 1964 | /** |
1900 | * Reconnect to an already entered place as guest. | 1965 | * Reconnect to an already entered place as guest. |
1901 | * | 1966 | * |
@@ -1906,8 +1971,8 @@ GNUNET_SOCIAL_guest_enter_by_name (const struct GNUNET_SOCIAL_App *app, | |||
1906 | * Flags for the entry. | 1971 | * Flags for the entry. |
1907 | * @param slicer | 1972 | * @param slicer |
1908 | * Slicer to use for processing incoming requests from guests. | 1973 | * Slicer to use for processing incoming requests from guests. |
1909 | * @param local_enter_cb | 1974 | * @param enter_cb |
1910 | * Called upon connection established to the social service. | 1975 | * Called upon re-entering is complete. |
1911 | * @param entry_decision_cb | 1976 | * @param entry_decision_cb |
1912 | * Called upon receiving entry decision. | 1977 | * Called upon receiving entry decision. |
1913 | * | 1978 | * |
@@ -1917,11 +1982,12 @@ struct GNUNET_SOCIAL_Guest * | |||
1917 | GNUNET_SOCIAL_guest_enter_reconnect (struct GNUNET_SOCIAL_GuestConnection *gconn, | 1982 | GNUNET_SOCIAL_guest_enter_reconnect (struct GNUNET_SOCIAL_GuestConnection *gconn, |
1918 | enum GNUNET_PSYC_SlaveJoinFlags flags, | 1983 | enum GNUNET_PSYC_SlaveJoinFlags flags, |
1919 | struct GNUNET_PSYC_Slicer *slicer, | 1984 | struct GNUNET_PSYC_Slicer *slicer, |
1920 | GNUNET_SOCIAL_GuestEnterCallback local_enter_cb, | 1985 | GNUNET_SOCIAL_GuestEnterCallback enter_cb, |
1921 | void *cls) | 1986 | void *cls) |
1922 | { | 1987 | { |
1923 | struct GNUNET_SOCIAL_Guest *gst = GNUNET_malloc (sizeof (*gst)); | 1988 | struct GNUNET_SOCIAL_Guest *gst = GNUNET_malloc (sizeof (*gst)); |
1924 | struct GNUNET_SOCIAL_Place *plc = &gst->plc; | 1989 | struct GNUNET_SOCIAL_Place *plc = &gst->plc; |
1990 | struct ReconnectContext *reconnect_ctx; | ||
1925 | 1991 | ||
1926 | uint16_t app_id_size = strlen (gconn->app->id) + 1; | 1992 | uint16_t app_id_size = strlen (gconn->app->id) + 1; |
1927 | struct GuestEnterRequest *greq; | 1993 | struct GuestEnterRequest *greq; |
@@ -1940,10 +2006,15 @@ GNUNET_SOCIAL_guest_enter_reconnect (struct GNUNET_SOCIAL_GuestConnection *gconn | |||
1940 | plc->pub_key = gconn->plc_msg.place_pub_key; | 2006 | plc->pub_key = gconn->plc_msg.place_pub_key; |
1941 | plc->ego_pub_key = gconn->plc_msg.ego_pub_key; | 2007 | plc->ego_pub_key = gconn->plc_msg.ego_pub_key; |
1942 | 2008 | ||
1943 | plc->op = GNUNET_OP_create (); | 2009 | reconnect_ctx = GNUNET_new (struct ReconnectContext); |
2010 | reconnect_ctx->guest = gst; | ||
2011 | reconnect_ctx->enter_cb = enter_cb; | ||
2012 | reconnect_ctx->enter_cls = cls; | ||
1944 | 2013 | ||
1945 | gst->enter_cb = local_enter_cb; | 2014 | plc->op = GNUNET_OP_create (); |
1946 | gst->cb_cls = cls; | 2015 | gst->enter_cb = &guest_enter_reconnect_cb; |
2016 | gst->entry_dcsn_cb = &guest_entry_dcsn_reconnect_cb; | ||
2017 | gst->cb_cls = reconnect_ctx; | ||
1947 | 2018 | ||
1948 | guest_connect (gst); | 2019 | guest_connect (gst); |
1949 | return gst; | 2020 | return gst; |
@@ -2028,7 +2099,11 @@ GNUNET_SOCIAL_guest_disconnect (struct GNUNET_SOCIAL_Guest *gst, | |||
2028 | GNUNET_ContinuationCallback disconnect_cb, | 2099 | GNUNET_ContinuationCallback disconnect_cb, |
2029 | void *cls) | 2100 | void *cls) |
2030 | { | 2101 | { |
2031 | place_disconnect (&gst->plc, disconnect_cb, cls); | 2102 | struct GNUNET_SOCIAL_Place *plc = &gst->plc; |
2103 | |||
2104 | plc->disconnect_cb = disconnect_cb; | ||
2105 | plc->disconnect_cls = cls; | ||
2106 | place_disconnect (plc); | ||
2032 | } | 2107 | } |
2033 | 2108 | ||
2034 | 2109 | ||
@@ -2054,10 +2129,15 @@ GNUNET_SOCIAL_guest_leave (struct GNUNET_SOCIAL_Guest *gst, | |||
2054 | GNUNET_ContinuationCallback disconnect_cb, | 2129 | GNUNET_ContinuationCallback disconnect_cb, |
2055 | void *cls) | 2130 | void *cls) |
2056 | { | 2131 | { |
2132 | struct GNUNET_MQ_Envelope *envelope; | ||
2133 | |||
2057 | GNUNET_SOCIAL_guest_talk (gst, "_notice_place_leave", env, NULL, NULL, | 2134 | GNUNET_SOCIAL_guest_talk (gst, "_notice_place_leave", env, NULL, NULL, |
2058 | GNUNET_SOCIAL_TALK_NONE); | 2135 | GNUNET_SOCIAL_TALK_NONE); |
2059 | place_leave (&gst->plc); | 2136 | gst->plc.disconnect_cb = disconnect_cb; |
2060 | GNUNET_SOCIAL_guest_disconnect (gst, disconnect_cb, cls); | 2137 | gst->plc.disconnect_cls = cls; |
2138 | envelope = GNUNET_MQ_msg_header (GNUNET_MESSAGE_TYPE_SOCIAL_PLACE_LEAVE); | ||
2139 | GNUNET_MQ_send (gst->plc.mq, | ||
2140 | envelope); | ||
2061 | } | 2141 | } |
2062 | 2142 | ||
2063 | 2143 | ||
diff --git a/src/social/test_social.c b/src/social/test_social.c index 64ef10125..4d95cf005 100644 --- a/src/social/test_social.c +++ b/src/social/test_social.c | |||
@@ -129,22 +129,22 @@ enum | |||
129 | TEST_HOST_ANSWER_DOOR_REFUSE = 4, | 129 | TEST_HOST_ANSWER_DOOR_REFUSE = 4, |
130 | TEST_GUEST_RECV_ENTRY_DCSN_REFUSE = 5, | 130 | TEST_GUEST_RECV_ENTRY_DCSN_REFUSE = 5, |
131 | TEST_HOST_ANSWER_DOOR_ADMIT = 6, | 131 | TEST_HOST_ANSWER_DOOR_ADMIT = 6, |
132 | TEST_GUEST_RECV_ENTRY_DCSN_ADMIT = 9, | 132 | TEST_GUEST_RECV_ENTRY_DCSN_ADMIT = 7, |
133 | TEST_HOST_ANNOUNCE = 10, | 133 | TEST_HOST_ANNOUNCE = 8, |
134 | TEST_HOST_ANNOUNCE_END = 11, | 134 | TEST_HOST_ANNOUNCE_END = 9, |
135 | TEST_GUEST_TALK = 12, | 135 | TEST_GUEST_TALK = 10, |
136 | TEST_HOST_ANNOUNCE2 = 13, | 136 | TEST_HOST_ANNOUNCE2 = 11, |
137 | TEST_HOST_ANNOUNCE2_END = 14, | 137 | TEST_HOST_ANNOUNCE2_END = 12, |
138 | TEST_GUEST_HISTORY_REPLAY = 15, | 138 | TEST_GUEST_HISTORY_REPLAY = 13, |
139 | TEST_GUEST_HISTORY_REPLAY_LATEST = 16, | 139 | TEST_GUEST_HISTORY_REPLAY_LATEST = 14, |
140 | TEST_GUEST_LOOK_AT = 17, | 140 | TEST_GUEST_LOOK_AT = 15, |
141 | TEST_GUEST_LOOK_FOR = 18, | 141 | TEST_GUEST_LOOK_FOR = 16, |
142 | TEST_GUEST_LEAVE = 18, | 142 | TEST_GUEST_LEAVE = 17, |
143 | TEST_ZONE_ADD_PLACE = 20, | 143 | TEST_ZONE_ADD_PLACE = 18, |
144 | TEST_GUEST_ENTER_BY_NAME = 21, | 144 | TEST_GUEST_ENTER_BY_NAME = 19, |
145 | TEST_RECONNECT = 22, | 145 | TEST_RECONNECT = 20, |
146 | TEST_GUEST_LEAVE2 = 23, | 146 | TEST_GUEST_LEAVE2 = 21, |
147 | TEST_HOST_LEAVE = 24, | 147 | TEST_HOST_LEAVE = 22, |
148 | } test; | 148 | } test; |
149 | 149 | ||
150 | 150 | ||
@@ -180,10 +180,28 @@ host_announce2 (); | |||
180 | 180 | ||
181 | 181 | ||
182 | /** | 182 | /** |
183 | * Clean up all resources used. | 183 | * Terminate the test case (failure). |
184 | * | ||
185 | * @param cls NULL | ||
186 | */ | ||
187 | static void | ||
188 | end_badly (void *cls) | ||
189 | { | ||
190 | end_badly_task = NULL; | ||
191 | GNUNET_SCHEDULER_shutdown (); | ||
192 | res = 2; | ||
193 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | ||
194 | "Test FAILED.\n"); | ||
195 | } | ||
196 | |||
197 | |||
198 | /** | ||
199 | * Terminate the test case (failure). | ||
200 | * | ||
201 | * @param cls NULL | ||
184 | */ | 202 | */ |
185 | static void | 203 | static void |
186 | cleanup () | 204 | end_shutdown (void *cls) |
187 | { | 205 | { |
188 | if (NULL != id) | 206 | if (NULL != id) |
189 | { | 207 | { |
@@ -202,7 +220,11 @@ cleanup () | |||
202 | GNUNET_PSYC_slicer_destroy (host_slicer); | 220 | GNUNET_PSYC_slicer_destroy (host_slicer); |
203 | host_slicer = NULL; | 221 | host_slicer = NULL; |
204 | } | 222 | } |
205 | 223 | if (NULL != end_badly_task) | |
224 | { | ||
225 | GNUNET_SCHEDULER_cancel (end_badly_task); | ||
226 | end_badly_task = NULL; | ||
227 | } | ||
206 | if (NULL != gst) | 228 | if (NULL != gst) |
207 | { | 229 | { |
208 | GNUNET_SOCIAL_guest_leave (gst, NULL, NULL, NULL); | 230 | GNUNET_SOCIAL_guest_leave (gst, NULL, NULL, NULL); |
@@ -216,21 +238,6 @@ cleanup () | |||
216 | hst_plc = NULL; | 238 | hst_plc = NULL; |
217 | } | 239 | } |
218 | GNUNET_SOCIAL_app_disconnect (app, NULL, NULL); | 240 | GNUNET_SOCIAL_app_disconnect (app, NULL, NULL); |
219 | GNUNET_SCHEDULER_shutdown (); | ||
220 | } | ||
221 | |||
222 | |||
223 | /** | ||
224 | * Terminate the test case (failure). | ||
225 | * | ||
226 | * @param cls NULL | ||
227 | */ | ||
228 | static void | ||
229 | end_badly (void *cls) | ||
230 | { | ||
231 | res = 1; | ||
232 | cleanup (); | ||
233 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Test FAILED.\n"); | ||
234 | } | 241 | } |
235 | 242 | ||
236 | 243 | ||
@@ -242,9 +249,9 @@ end_badly (void *cls) | |||
242 | static void | 249 | static void |
243 | end_normally (void *cls) | 250 | end_normally (void *cls) |
244 | { | 251 | { |
252 | GNUNET_SCHEDULER_shutdown (); | ||
245 | res = 0; | 253 | res = 0; |
246 | cleanup (); | 254 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, "Test PASSED.\n"); |
247 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Test PASSED.\n"); | ||
248 | } | 255 | } |
249 | 256 | ||
250 | 257 | ||
@@ -254,7 +261,7 @@ end_normally (void *cls) | |||
254 | static void | 261 | static void |
255 | end () | 262 | end () |
256 | { | 263 | { |
257 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 264 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
258 | "Test #%u: Ending tests.\n", test); | 265 | "Test #%u: Ending tests.\n", test); |
259 | 266 | ||
260 | if (end_badly_task != NULL) | 267 | if (end_badly_task != NULL) |
@@ -271,7 +278,7 @@ transmit_resume (void *cls) | |||
271 | { | 278 | { |
272 | struct TransmitClosure *tmit = cls; | 279 | struct TransmitClosure *tmit = cls; |
273 | 280 | ||
274 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 281 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
275 | "Test #%u: Transmission resumed.\n", test); | 282 | "Test #%u: Transmission resumed.\n", test); |
276 | if (NULL != tmit->host_ann) | 283 | if (NULL != tmit->host_ann) |
277 | GNUNET_SOCIAL_host_announce_resume (tmit->host_ann); | 284 | GNUNET_SOCIAL_host_announce_resume (tmit->host_ann); |
@@ -296,7 +303,7 @@ notify_data (void *cls, uint16_t *data_size, void *data) | |||
296 | } | 303 | } |
297 | 304 | ||
298 | uint16_t size = strlen (tmit->data[tmit->n]); | 305 | uint16_t size = strlen (tmit->data[tmit->n]); |
299 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 306 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
300 | "Test #%u: Transmit notify data: %u bytes available, " | 307 | "Test #%u: Transmit notify data: %u bytes available, " |
301 | "processing fragment %u/%u (size %u).\n", | 308 | "processing fragment %u/%u (size %u).\n", |
302 | test, *data_size, tmit->n + 1, tmit->data_count, size); | 309 | test, *data_size, tmit->n + 1, tmit->data_count, size); |
@@ -309,7 +316,7 @@ notify_data (void *cls, uint16_t *data_size, void *data) | |||
309 | 316 | ||
310 | if (GNUNET_YES != tmit->paused && 0 < tmit->data_delay[tmit->n]) | 317 | if (GNUNET_YES != tmit->paused && 0 < tmit->data_delay[tmit->n]) |
311 | { | 318 | { |
312 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 319 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
313 | "Test #%u: Transmission paused.\n", test); | 320 | "Test #%u: Transmission paused.\n", test); |
314 | tmit->paused = GNUNET_YES; | 321 | tmit->paused = GNUNET_YES; |
315 | GNUNET_SCHEDULER_add_delayed ( | 322 | GNUNET_SCHEDULER_add_delayed ( |
@@ -331,7 +338,7 @@ notify_data (void *cls, uint16_t *data_size, void *data) | |||
331 | static void | 338 | static void |
332 | host_left () | 339 | host_left () |
333 | { | 340 | { |
334 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 341 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
335 | "Test #%u: The host has left the place.\n", test); | 342 | "Test #%u: The host has left the place.\n", test); |
336 | end (); | 343 | end (); |
337 | } | 344 | } |
@@ -352,7 +359,7 @@ host_farewell2 (void *cls, | |||
352 | const struct GNUNET_SOCIAL_Nym *nym, | 359 | const struct GNUNET_SOCIAL_Nym *nym, |
353 | struct GNUNET_PSYC_Environment *env) | 360 | struct GNUNET_PSYC_Environment *env) |
354 | { | 361 | { |
355 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 362 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
356 | "Nym left the place again.\n"); | 363 | "Nym left the place again.\n"); |
357 | GNUNET_SCHEDULER_add_now (&schedule_host_leave, NULL); | 364 | GNUNET_SCHEDULER_add_now (&schedule_host_leave, NULL); |
358 | } | 365 | } |
@@ -365,13 +372,14 @@ host_reconnected (void *cls, int result, | |||
365 | { | 372 | { |
366 | place_pub_key = *home_pub_key; | 373 | place_pub_key = *home_pub_key; |
367 | GNUNET_CRYPTO_hash (&place_pub_key, sizeof (place_pub_key), &place_pub_hash); | 374 | GNUNET_CRYPTO_hash (&place_pub_key, sizeof (place_pub_key), &place_pub_hash); |
368 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 375 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
369 | "Test #%u: Host reconnected to place %s\n", | 376 | "Test #%u: Host reconnected to place %s\n", |
370 | test, GNUNET_h2s (&place_pub_hash)); | 377 | test, GNUNET_h2s (&place_pub_hash)); |
371 | 378 | ||
372 | is_host_reconnected = GNUNET_YES; | 379 | is_host_reconnected = GNUNET_YES; |
373 | if (GNUNET_YES == is_guest_reconnected) | 380 | if (GNUNET_YES == is_guest_reconnected) |
374 | { | 381 | { |
382 | GNUNET_assert (NULL != gst); | ||
375 | GNUNET_SCHEDULER_add_now (&schedule_guest_leave, NULL); | 383 | GNUNET_SCHEDULER_add_now (&schedule_guest_leave, NULL); |
376 | } | 384 | } |
377 | } | 385 | } |
@@ -382,7 +390,7 @@ guest_reconnected (void *cls, int result, | |||
382 | const struct GNUNET_CRYPTO_EddsaPublicKey *place_pub_key, | 390 | const struct GNUNET_CRYPTO_EddsaPublicKey *place_pub_key, |
383 | uint64_t max_message_id) | 391 | uint64_t max_message_id) |
384 | { | 392 | { |
385 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 393 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
386 | "Test #%u: Guest reconnected to place: %d\n", | 394 | "Test #%u: Guest reconnected to place: %d\n", |
387 | test, result); | 395 | test, result); |
388 | GNUNET_assert (0 <= result); | 396 | GNUNET_assert (0 <= result); |
@@ -390,6 +398,7 @@ guest_reconnected (void *cls, int result, | |||
390 | is_guest_reconnected = GNUNET_YES; | 398 | is_guest_reconnected = GNUNET_YES; |
391 | if (GNUNET_YES == is_host_reconnected) | 399 | if (GNUNET_YES == is_host_reconnected) |
392 | { | 400 | { |
401 | GNUNET_assert (NULL != gst); | ||
393 | GNUNET_SCHEDULER_add_now (&schedule_guest_leave, NULL); | 402 | GNUNET_SCHEDULER_add_now (&schedule_guest_leave, NULL); |
394 | } | 403 | } |
395 | } | 404 | } |
@@ -398,7 +407,7 @@ guest_reconnected (void *cls, int result, | |||
398 | static void | 407 | static void |
399 | app_connected (void *cls) | 408 | app_connected (void *cls) |
400 | { | 409 | { |
401 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 410 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
402 | "Test #%u: App connected: %p\n", test, cls); | 411 | "Test #%u: App connected: %p\n", test, cls); |
403 | } | 412 | } |
404 | 413 | ||
@@ -411,21 +420,28 @@ app_recv_host (void *cls, | |||
411 | enum GNUNET_SOCIAL_AppPlaceState place_state) | 420 | enum GNUNET_SOCIAL_AppPlaceState place_state) |
412 | { | 421 | { |
413 | struct GNUNET_HashCode host_pub_hash; | 422 | struct GNUNET_HashCode host_pub_hash; |
414 | GNUNET_CRYPTO_hash (host_pub_key, sizeof (*host_pub_key), &host_pub_hash); | ||
415 | 423 | ||
416 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 424 | GNUNET_CRYPTO_hash (host_pub_key, |
425 | sizeof (*host_pub_key), | ||
426 | &host_pub_hash); | ||
427 | |||
428 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, | ||
417 | "Test #%u: Got app host place notification: %s\n", | 429 | "Test #%u: Got app host place notification: %s\n", |
418 | test, GNUNET_h2s (&host_pub_hash)); | 430 | test, |
431 | GNUNET_h2s (&host_pub_hash)); | ||
419 | 432 | ||
420 | if (test == TEST_RECONNECT) | 433 | if (test == TEST_RECONNECT) |
421 | { | 434 | { |
422 | if (0 == memcmp (&place_pub_key, host_pub_key, sizeof (*host_pub_key))) | 435 | if (0 == memcmp (&place_pub_key, host_pub_key, sizeof (*host_pub_key))) |
423 | { | 436 | { |
424 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 437 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
425 | "Test #%u: Reconnecting to host place: %s\n", | 438 | "Test #%u: Reconnecting to host place: %s\n", |
426 | test, GNUNET_h2s (&host_pub_hash)); | 439 | test, GNUNET_h2s (&host_pub_hash)); |
427 | hst = GNUNET_SOCIAL_host_enter_reconnect (hconn, host_slicer, host_reconnected, | 440 | hst = GNUNET_SOCIAL_host_enter_reconnect (hconn, host_slicer, |
428 | host_answer_door, host_farewell2, NULL); | 441 | &host_reconnected, |
442 | &host_answer_door, | ||
443 | &host_farewell2, | ||
444 | NULL); | ||
429 | } | 445 | } |
430 | } | 446 | } |
431 | } | 447 | } |
@@ -439,21 +455,30 @@ app_recv_guest (void *cls, | |||
439 | enum GNUNET_SOCIAL_AppPlaceState place_state) | 455 | enum GNUNET_SOCIAL_AppPlaceState place_state) |
440 | { | 456 | { |
441 | struct GNUNET_HashCode guest_pub_hash; | 457 | struct GNUNET_HashCode guest_pub_hash; |
442 | GNUNET_CRYPTO_hash (guest_pub_key, sizeof (*guest_pub_key), &guest_pub_hash); | ||
443 | 458 | ||
444 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 459 | GNUNET_CRYPTO_hash (guest_pub_key, |
460 | sizeof (*guest_pub_key), | ||
461 | &guest_pub_hash); | ||
462 | |||
463 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, | ||
445 | "Test #%u: Got app guest place notification: %s\n", | 464 | "Test #%u: Got app guest place notification: %s\n", |
446 | test, GNUNET_h2s (&guest_pub_hash)); | 465 | test, GNUNET_h2s (&guest_pub_hash)); |
447 | 466 | ||
448 | if (test == TEST_RECONNECT) | 467 | if (test == TEST_RECONNECT) |
449 | { | 468 | { |
450 | if (0 == memcmp (&place_pub_key, guest_pub_key, sizeof (*guest_pub_key))) | 469 | if (0 == memcmp (&place_pub_key, |
470 | guest_pub_key, | ||
471 | sizeof (*guest_pub_key))) | ||
451 | { | 472 | { |
452 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 473 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
453 | "Test #%u: Reconnecting to guest place: %s\n", | 474 | "Test #%u: Reconnecting to guest place: %s\n", |
454 | test, GNUNET_h2s (&guest_pub_hash)); | 475 | test, GNUNET_h2s (&guest_pub_hash)); |
455 | gst = GNUNET_SOCIAL_guest_enter_reconnect (gconn, GNUNET_PSYC_SLAVE_JOIN_NONE, | 476 | gst = GNUNET_SOCIAL_guest_enter_reconnect (gconn, |
456 | guest_slicer, guest_reconnected, NULL); | 477 | GNUNET_PSYC_SLAVE_JOIN_NONE, |
478 | guest_slicer, | ||
479 | &guest_reconnected, | ||
480 | NULL); | ||
481 | GNUNET_assert (NULL != gst); | ||
457 | } | 482 | } |
458 | } | 483 | } |
459 | } | 484 | } |
@@ -478,7 +503,7 @@ app_recv_ego (void *cls, | |||
478 | const char *name) | 503 | const char *name) |
479 | { | 504 | { |
480 | char *ego_pub_str = GNUNET_CRYPTO_ecdsa_public_key_to_string (ego_pub_key); | 505 | char *ego_pub_str = GNUNET_CRYPTO_ecdsa_public_key_to_string (ego_pub_key); |
481 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 506 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
482 | "Test #%u: Got app ego notification: %p %s %s\n", | 507 | "Test #%u: Got app ego notification: %p %s %s\n", |
483 | test, ego, name, ego_pub_str); | 508 | test, ego, name, ego_pub_str); |
484 | GNUNET_free (ego_pub_str); | 509 | GNUNET_free (ego_pub_str); |
@@ -487,15 +512,30 @@ app_recv_ego (void *cls, | |||
487 | { | 512 | { |
488 | host_ego = ego; | 513 | host_ego = ego; |
489 | host_pub_key = ego_pub_key; | 514 | host_pub_key = ego_pub_key; |
490 | GNUNET_assert (TEST_IDENTITIES_CREATE == test); | 515 | if (TEST_IDENTITIES_CREATE == test) |
491 | enter_if_ready (); | 516 | { |
517 | enter_if_ready (); | ||
518 | } | ||
519 | else | ||
520 | { | ||
521 | GNUNET_assert (TEST_RECONNECT == test); | ||
522 | } | ||
492 | } | 523 | } |
493 | else if (NULL != strstr (name, guest_name)) | 524 | else if (NULL != strstr (name, guest_name)) |
494 | { | 525 | { |
495 | guest_ego = ego; | 526 | guest_ego = ego; |
496 | guest_pub_key = ego_pub_key; | 527 | guest_pub_key = ego_pub_key; |
497 | GNUNET_assert (TEST_IDENTITIES_CREATE == test); | 528 | if (TEST_IDENTITIES_CREATE == test) |
498 | enter_if_ready (); | 529 | { |
530 | enter_if_ready (); | ||
531 | } | ||
532 | else | ||
533 | { | ||
534 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, | ||
535 | "test = %d\n", | ||
536 | test); | ||
537 | GNUNET_assert (TEST_RECONNECT == test); | ||
538 | } | ||
499 | } | 539 | } |
500 | } | 540 | } |
501 | 541 | ||
@@ -504,7 +544,6 @@ static void | |||
504 | schedule_reconnect (void *cls) | 544 | schedule_reconnect (void *cls) |
505 | { | 545 | { |
506 | test = TEST_RECONNECT; | 546 | test = TEST_RECONNECT; |
507 | |||
508 | GNUNET_SOCIAL_host_disconnect (hst, NULL, NULL); | 547 | GNUNET_SOCIAL_host_disconnect (hst, NULL, NULL); |
509 | GNUNET_SOCIAL_guest_disconnect (gst, NULL, NULL); | 548 | GNUNET_SOCIAL_guest_disconnect (gst, NULL, NULL); |
510 | hst = NULL; | 549 | hst = NULL; |
@@ -512,10 +551,10 @@ schedule_reconnect (void *cls) | |||
512 | 551 | ||
513 | GNUNET_SOCIAL_app_disconnect (app, NULL, NULL); | 552 | GNUNET_SOCIAL_app_disconnect (app, NULL, NULL); |
514 | app = GNUNET_SOCIAL_app_connect (cfg, app_id, | 553 | app = GNUNET_SOCIAL_app_connect (cfg, app_id, |
515 | app_recv_ego, | 554 | &app_recv_ego, |
516 | app_recv_host, | 555 | &app_recv_host, |
517 | app_recv_guest, | 556 | &app_recv_guest, |
518 | app_connected, | 557 | &app_connected, |
519 | NULL); | 558 | NULL); |
520 | } | 559 | } |
521 | 560 | ||
@@ -524,7 +563,7 @@ static void | |||
524 | host_recv_zone_add_place_result (void *cls, int64_t result, | 563 | host_recv_zone_add_place_result (void *cls, int64_t result, |
525 | const void *data, uint16_t data_size) | 564 | const void *data, uint16_t data_size) |
526 | { | 565 | { |
527 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 566 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
528 | "Test #%u: Zone add place result: %" PRId64 " (%.*s).\n", | 567 | "Test #%u: Zone add place result: %" PRId64 " (%.*s).\n", |
529 | test, result, data_size, (const char *) data); | 568 | test, result, data_size, (const char *) data); |
530 | GNUNET_assert (GNUNET_YES == result); | 569 | GNUNET_assert (GNUNET_YES == result); |
@@ -538,7 +577,7 @@ static void | |||
538 | zone_add_place () | 577 | zone_add_place () |
539 | { | 578 | { |
540 | test = TEST_ZONE_ADD_PLACE; | 579 | test = TEST_ZONE_ADD_PLACE; |
541 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 580 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
542 | "Test #%u: Adding place to zone.\n", test); | 581 | "Test #%u: Adding place to zone.\n", test); |
543 | 582 | ||
544 | GNUNET_SOCIAL_zone_add_place (app, host_ego, "home", "let.me*in!", | 583 | GNUNET_SOCIAL_zone_add_place (app, host_ego, "home", "let.me*in!", |
@@ -557,7 +596,7 @@ host_farewell (void *cls, | |||
557 | nym_key = GNUNET_SOCIAL_nym_get_pub_key (nym); | 596 | nym_key = GNUNET_SOCIAL_nym_get_pub_key (nym); |
558 | 597 | ||
559 | char *str = GNUNET_CRYPTO_ecdsa_public_key_to_string (nym_key); | 598 | char *str = GNUNET_CRYPTO_ecdsa_public_key_to_string (nym_key); |
560 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 599 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
561 | "Test #%u: Farewell: nym %s (%s) has left the place.\n", | 600 | "Test #%u: Farewell: nym %s (%s) has left the place.\n", |
562 | test, GNUNET_h2s (GNUNET_SOCIAL_nym_get_pub_key_hash (nym)), str); | 601 | test, GNUNET_h2s (GNUNET_SOCIAL_nym_get_pub_key_hash (nym)), str); |
563 | GNUNET_free (str); | 602 | GNUNET_free (str); |
@@ -578,13 +617,13 @@ host_farewell (void *cls, | |||
578 | static void | 617 | static void |
579 | guest_left (void *cls) | 618 | guest_left (void *cls) |
580 | { | 619 | { |
581 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 620 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
582 | "Test #%u: The guest has left the place.\n", test); | 621 | "Test #%u: The guest has left the place.\n", test); |
583 | } | 622 | } |
584 | 623 | ||
585 | 624 | ||
586 | static void | 625 | static void |
587 | guest_leave() | 626 | guest_leave () |
588 | { | 627 | { |
589 | if (test < TEST_RECONNECT) | 628 | if (test < TEST_RECONNECT) |
590 | test = TEST_GUEST_LEAVE; | 629 | test = TEST_GUEST_LEAVE; |
@@ -615,11 +654,11 @@ guest_look_for_result (void *cls, | |||
615 | uint16_t data_size) | 654 | uint16_t data_size) |
616 | { | 655 | { |
617 | struct ResultClosure *rcls = cls; | 656 | struct ResultClosure *rcls = cls; |
618 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 657 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
619 | "Test #%u: guest_look_for_result: %" PRId64 "\n", | 658 | "Test #%u: guest_look_for_result: %" PRId64 "\n", |
620 | test, result_code); | 659 | test, result_code); |
621 | GNUNET_assert (GNUNET_OK == result_code); | 660 | GNUNET_assert (GNUNET_OK == result_code); |
622 | GNUNET_assert (3 == rcls->n); | 661 | GNUNET_assert (6 == rcls->n); |
623 | GNUNET_free (rcls); | 662 | GNUNET_free (rcls); |
624 | GNUNET_SCHEDULER_add_now (&schedule_guest_leave, NULL); | 663 | GNUNET_SCHEDULER_add_now (&schedule_guest_leave, NULL); |
625 | } | 664 | } |
@@ -635,7 +674,7 @@ guest_look_for_var (void *cls, | |||
635 | { | 674 | { |
636 | struct ResultClosure *rcls = cls; | 675 | struct ResultClosure *rcls = cls; |
637 | rcls->n++; | 676 | rcls->n++; |
638 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 677 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
639 | "Test #%u: guest_look_for_var: %s\n%.*s\n", | 678 | "Test #%u: guest_look_for_var: %s\n%.*s\n", |
640 | test, name, value_size, (const char *) value); | 679 | test, name, value_size, (const char *) value); |
641 | } | 680 | } |
@@ -656,7 +695,7 @@ guest_look_at_result (void *cls, int64_t result_code, | |||
656 | { | 695 | { |
657 | struct ResultClosure *rcls = cls; | 696 | struct ResultClosure *rcls = cls; |
658 | 697 | ||
659 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 698 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
660 | "Test #%u: guest_look_at_result: %" PRId64 "\n", | 699 | "Test #%u: guest_look_at_result: %" PRId64 "\n", |
661 | test, result_code); | 700 | test, result_code); |
662 | GNUNET_assert (GNUNET_OK == result_code); | 701 | GNUNET_assert (GNUNET_OK == result_code); |
@@ -677,7 +716,7 @@ guest_look_at_var (void *cls, | |||
677 | struct ResultClosure *rcls = cls; | 716 | struct ResultClosure *rcls = cls; |
678 | rcls->n++; | 717 | rcls->n++; |
679 | 718 | ||
680 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 719 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
681 | "Test #%u: guest_look_at_var: %s\n%.*s\n", | 720 | "Test #%u: guest_look_at_var: %s\n%.*s\n", |
682 | test ,name, value_size, (const char *) value); | 721 | test ,name, value_size, (const char *) value); |
683 | } | 722 | } |
@@ -696,7 +735,7 @@ static void | |||
696 | guest_recv_history_replay_latest_result (void *cls, int64_t result, | 735 | guest_recv_history_replay_latest_result (void *cls, int64_t result, |
697 | const void *data, uint16_t data_size) | 736 | const void *data, uint16_t data_size) |
698 | { | 737 | { |
699 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 738 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
700 | "Test #%u: Guest received latest history replay result " | 739 | "Test #%u: Guest received latest history replay result " |
701 | "(%" PRIu32 " messages, %" PRId64 " fragments):\n" | 740 | "(%" PRIu32 " messages, %" PRId64 " fragments):\n" |
702 | "%.*s\n", | 741 | "%.*s\n", |
@@ -725,7 +764,7 @@ static void | |||
725 | guest_recv_history_replay_result (void *cls, int64_t result, | 764 | guest_recv_history_replay_result (void *cls, int64_t result, |
726 | const void *data, uint16_t data_size) | 765 | const void *data, uint16_t data_size) |
727 | { | 766 | { |
728 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 767 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
729 | "Test #%u: Guest received history replay result: %" PRId64 "\n" | 768 | "Test #%u: Guest received history replay result: %" PRId64 "\n" |
730 | "%.*s\n", | 769 | "%.*s\n", |
731 | test, result, data_size, (const char *) data); | 770 | test, result, data_size, (const char *) data); |
@@ -756,7 +795,7 @@ guest_recv_method (void *cls, | |||
756 | uint64_t message_id, | 795 | uint64_t message_id, |
757 | const char *method_name) | 796 | const char *method_name) |
758 | { | 797 | { |
759 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 798 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
760 | "Test #%u: Guest received method for message ID %" PRIu64 ":\n" | 799 | "Test #%u: Guest received method for message ID %" PRIu64 ":\n" |
761 | "%s (flags: %x)\n", | 800 | "%s (flags: %x)\n", |
762 | test, message_id, method_name, ntohl (meth->flags)); | 801 | test, message_id, method_name, ntohl (meth->flags)); |
@@ -775,7 +814,7 @@ guest_recv_modifier (void *cls, | |||
775 | uint16_t value_size, | 814 | uint16_t value_size, |
776 | uint16_t full_value_size) | 815 | uint16_t full_value_size) |
777 | { | 816 | { |
778 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 817 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
779 | "Test #%u: Guest received modifier for message ID %" PRIu64 ":\n" | 818 | "Test #%u: Guest received modifier for message ID %" PRIu64 ":\n" |
780 | "%c%s: %.*s (size: %u)\n", | 819 | "%c%s: %.*s (size: %u)\n", |
781 | test, message_id, oper, name, value_size, (const char *) value, value_size); | 820 | test, message_id, oper, name, value_size, (const char *) value, value_size); |
@@ -793,7 +832,7 @@ guest_recv_mod_foo_bar (void *cls, | |||
793 | uint16_t value_size, | 832 | uint16_t value_size, |
794 | uint16_t full_value_size) | 833 | uint16_t full_value_size) |
795 | { | 834 | { |
796 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 835 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
797 | "Test #%u: Guest received modifier matching _foo_bar for message ID %" PRIu64 ":\n" | 836 | "Test #%u: Guest received modifier matching _foo_bar for message ID %" PRIu64 ":\n" |
798 | "%c%s: %.*s (size: %u)\n", | 837 | "%c%s: %.*s (size: %u)\n", |
799 | test, message_id, oper, name, value_size, (const char *) value, value_size); | 838 | test, message_id, oper, name, value_size, (const char *) value, value_size); |
@@ -811,7 +850,7 @@ guest_recv_data (void *cls, | |||
811 | const void *data, | 850 | const void *data, |
812 | uint16_t data_size) | 851 | uint16_t data_size) |
813 | { | 852 | { |
814 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 853 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
815 | "Test #%u: Guest received data for message ID %" PRIu64 ":\n" | 854 | "Test #%u: Guest received data for message ID %" PRIu64 ":\n" |
816 | "%.*s\n", | 855 | "%.*s\n", |
817 | test, message_id, data_size, (const char *) data); | 856 | test, message_id, data_size, (const char *) data); |
@@ -826,7 +865,7 @@ guest_recv_eom (void *cls, | |||
826 | uint64_t message_id, | 865 | uint64_t message_id, |
827 | uint8_t is_cancelled) | 866 | uint8_t is_cancelled) |
828 | { | 867 | { |
829 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 868 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
830 | "Test #%u: Guest received end of message ID %" PRIu64 | 869 | "Test #%u: Guest received end of message ID %" PRIu64 |
831 | ", cancelled: %u\n", | 870 | ", cancelled: %u\n", |
832 | test, message_id, is_cancelled); | 871 | test, message_id, is_cancelled); |
@@ -868,7 +907,7 @@ host_recv_method (void *cls, | |||
868 | uint64_t message_id, | 907 | uint64_t message_id, |
869 | const char *method_name) | 908 | const char *method_name) |
870 | { | 909 | { |
871 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 910 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
872 | "Test #%u: Host received method for message ID %" PRIu64 ":\n" | 911 | "Test #%u: Host received method for message ID %" PRIu64 ":\n" |
873 | "%s\n", | 912 | "%s\n", |
874 | test, message_id, method_name); | 913 | test, message_id, method_name); |
@@ -887,7 +926,7 @@ host_recv_modifier (void *cls, | |||
887 | uint16_t value_size, | 926 | uint16_t value_size, |
888 | uint16_t full_value_size) | 927 | uint16_t full_value_size) |
889 | { | 928 | { |
890 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 929 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
891 | "Test #%u: Host received modifier for message ID %" PRIu64 ":\n" | 930 | "Test #%u: Host received modifier for message ID %" PRIu64 ":\n" |
892 | "%c%s: %.*s\n", | 931 | "%c%s: %.*s\n", |
893 | test, message_id, oper, name, value_size, (const char *) value); | 932 | test, message_id, oper, name, value_size, (const char *) value); |
@@ -902,7 +941,7 @@ host_recv_data (void *cls, | |||
902 | const void *data, | 941 | const void *data, |
903 | uint16_t data_size) | 942 | uint16_t data_size) |
904 | { | 943 | { |
905 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 944 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
906 | "Test #%u: Host received data for message ID %" PRIu64 ":\n" | 945 | "Test #%u: Host received data for message ID %" PRIu64 ":\n" |
907 | "%.*s\n", | 946 | "%.*s\n", |
908 | test, message_id, data_size, (const char *) data); | 947 | test, message_id, data_size, (const char *) data); |
@@ -916,7 +955,7 @@ host_recv_eom (void *cls, | |||
916 | uint64_t message_id, | 955 | uint64_t message_id, |
917 | uint8_t is_cancelled) | 956 | uint8_t is_cancelled) |
918 | { | 957 | { |
919 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 958 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
920 | "Test #%u: Host received end of message ID %" PRIu64 | 959 | "Test #%u: Host received end of message ID %" PRIu64 |
921 | ", cancelled: %u\n", | 960 | ", cancelled: %u\n", |
922 | test, message_id, is_cancelled); | 961 | test, message_id, is_cancelled); |
@@ -981,7 +1020,7 @@ host_announce () | |||
981 | { | 1020 | { |
982 | test = TEST_HOST_ANNOUNCE; | 1021 | test = TEST_HOST_ANNOUNCE; |
983 | 1022 | ||
984 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 1023 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
985 | "Test #%u: Host announcement.\n", test); | 1024 | "Test #%u: Host announcement.\n", test); |
986 | 1025 | ||
987 | tmit = (struct TransmitClosure) {}; | 1026 | tmit = (struct TransmitClosure) {}; |
@@ -1015,7 +1054,7 @@ host_announce2 () | |||
1015 | 1054 | ||
1016 | test = TEST_HOST_ANNOUNCE2; | 1055 | test = TEST_HOST_ANNOUNCE2; |
1017 | 1056 | ||
1018 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 1057 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
1019 | "Test #%u: Host announcement 2.\n", test); | 1058 | "Test #%u: Host announcement 2.\n", test); |
1020 | 1059 | ||
1021 | tmit = (struct TransmitClosure) {}; | 1060 | tmit = (struct TransmitClosure) {}; |
@@ -1025,7 +1064,7 @@ host_announce2 () | |||
1025 | GNUNET_PSYC_env_add (tmit.env, GNUNET_PSYC_OP_ASSIGN, | 1064 | GNUNET_PSYC_env_add (tmit.env, GNUNET_PSYC_OP_ASSIGN, |
1026 | "_foo2_bar", DATA2ARG ("FOO BAR")); | 1065 | "_foo2_bar", DATA2ARG ("FOO BAR")); |
1027 | GNUNET_PSYC_env_add (tmit.env, GNUNET_PSYC_OP_ASSIGN, | 1066 | GNUNET_PSYC_env_add (tmit.env, GNUNET_PSYC_OP_ASSIGN, |
1028 | "_foo2_bar", DATA2ARG ("FOO BAR BAZ")); | 1067 | "_foo2_bar_baz", DATA2ARG ("FOO BAR BAZ")); |
1029 | tmit.data[0] = "AAA BBB CCC "; | 1068 | tmit.data[0] = "AAA BBB CCC "; |
1030 | tmit.data[1] = "ABC DEF GHI JKL.\n"; | 1069 | tmit.data[1] = "ABC DEF GHI JKL.\n"; |
1031 | tmit.data[2] = "TESTING ONE TWO THREE.\n"; | 1070 | tmit.data[2] = "TESTING ONE TWO THREE.\n"; |
@@ -1043,7 +1082,7 @@ guest_recv_entry_decision (void *cls, | |||
1043 | int is_admitted, | 1082 | int is_admitted, |
1044 | const struct GNUNET_PSYC_Message *entry_msg) | 1083 | const struct GNUNET_PSYC_Message *entry_msg) |
1045 | { | 1084 | { |
1046 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 1085 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
1047 | "Test #%u: Guest received entry decision (try %u): %d.\n", | 1086 | "Test #%u: Guest received entry decision (try %u): %d.\n", |
1048 | test, join_req_count, is_admitted); | 1087 | test, join_req_count, is_admitted); |
1049 | 1088 | ||
@@ -1068,7 +1107,8 @@ guest_recv_entry_decision (void *cls, | |||
1068 | { | 1107 | { |
1069 | case TEST_GUEST_RECV_ENTRY_DCSN_REFUSE: | 1108 | case TEST_GUEST_RECV_ENTRY_DCSN_REFUSE: |
1070 | GNUNET_assert (GNUNET_NO == is_admitted); | 1109 | GNUNET_assert (GNUNET_NO == is_admitted); |
1071 | guest_enter (); | 1110 | test = TEST_HOST_ANSWER_DOOR_ADMIT; |
1111 | GNUNET_SOCIAL_guest_disconnect (gst, &guest_enter, NULL); | ||
1072 | break; | 1112 | break; |
1073 | 1113 | ||
1074 | case TEST_GUEST_RECV_ENTRY_DCSN_ADMIT: | 1114 | case TEST_GUEST_RECV_ENTRY_DCSN_ADMIT: |
@@ -1097,7 +1137,7 @@ host_answer_door (void *cls, | |||
1097 | { | 1137 | { |
1098 | join_req_count++; | 1138 | join_req_count++; |
1099 | 1139 | ||
1100 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 1140 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
1101 | "Test #%u: Host received entry request from guest (try %u).\n", | 1141 | "Test #%u: Host received entry request from guest (try %u).\n", |
1102 | (uint8_t) test, join_req_count); | 1142 | (uint8_t) test, join_req_count); |
1103 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 1143 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
@@ -1118,7 +1158,7 @@ host_answer_door (void *cls, | |||
1118 | // fall through | 1158 | // fall through |
1119 | 1159 | ||
1120 | case TEST_GUEST_ENTER_BY_NAME: | 1160 | case TEST_GUEST_ENTER_BY_NAME: |
1121 | join_resp = GNUNET_PSYC_message_create ("_notice_place_admit", env, | 1161 | join_resp = GNUNET_PSYC_message_create ("_notice_place_admit", env, |
1122 | DATA2ARG ("Welcome, nym!")); | 1162 | DATA2ARG ("Welcome, nym!")); |
1123 | GNUNET_SOCIAL_host_entry_decision (hst, nym, GNUNET_YES, join_resp); | 1163 | GNUNET_SOCIAL_host_entry_decision (hst, nym, GNUNET_YES, join_resp); |
1124 | break; | 1164 | break; |
@@ -1135,18 +1175,18 @@ guest_recv_local_enter (void *cls, int result, | |||
1135 | const struct GNUNET_CRYPTO_EddsaPublicKey *place_pub_key, | 1175 | const struct GNUNET_CRYPTO_EddsaPublicKey *place_pub_key, |
1136 | uint64_t max_message_id) | 1176 | uint64_t max_message_id) |
1137 | { | 1177 | { |
1138 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 1178 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
1139 | "Test #%u: Guest entered to local place: %d\n", | 1179 | "Test #%u: Guest entered local place: %d\n", |
1140 | test, result); | 1180 | test, result); |
1141 | GNUNET_assert (0 <= result); | 1181 | GNUNET_assert (GNUNET_OK == result); |
1142 | } | 1182 | } |
1143 | 1183 | ||
1144 | 1184 | ||
1145 | static void | 1185 | static void |
1146 | guest_enter () | 1186 | guest_enter () |
1147 | { | 1187 | { |
1148 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 1188 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
1149 | "Test #%u: Entering to place as guest.\n", test); | 1189 | "Test #%u: Entering place as guest.\n", test); |
1150 | 1190 | ||
1151 | struct GuestEnterMessage *emsg = &guest_enter_msg; | 1191 | struct GuestEnterMessage *emsg = &guest_enter_msg; |
1152 | 1192 | ||
@@ -1177,8 +1217,8 @@ static void | |||
1177 | guest_enter_by_name () | 1217 | guest_enter_by_name () |
1178 | { | 1218 | { |
1179 | test = TEST_GUEST_ENTER_BY_NAME; | 1219 | test = TEST_GUEST_ENTER_BY_NAME; |
1180 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 1220 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
1181 | "Test #%u: Entering to place by name as guest.\n", test); | 1221 | "Test #%u: Entering place by name as guest.\n", test); |
1182 | 1222 | ||
1183 | struct GuestEnterMessage *emsg = &guest_enter_msg; | 1223 | struct GuestEnterMessage *emsg = &guest_enter_msg; |
1184 | 1224 | ||
@@ -1222,7 +1262,7 @@ guest_init () | |||
1222 | guest_recv_data, guest_recv_eom, NULL); | 1262 | guest_recv_data, guest_recv_eom, NULL); |
1223 | GNUNET_PSYC_slicer_modifier_add (guest_slicer, "_foo_bar", | 1263 | GNUNET_PSYC_slicer_modifier_add (guest_slicer, "_foo_bar", |
1224 | guest_recv_mod_foo_bar, &mod_foo_bar_rcls); | 1264 | guest_recv_mod_foo_bar, &mod_foo_bar_rcls); |
1225 | test = TEST_HOST_ANSWER_DOOR_ADMIT; | 1265 | test = TEST_HOST_ANSWER_DOOR_REFUSE; |
1226 | 1266 | ||
1227 | GNUNET_SOCIAL_zone_add_nym (app, guest_ego, "host", host_pub_key, | 1267 | GNUNET_SOCIAL_zone_add_nym (app, guest_ego, "host", host_pub_key, |
1228 | GNUNET_TIME_relative_to_absolute (GNUNET_TIME_UNIT_MINUTES), | 1268 | GNUNET_TIME_relative_to_absolute (GNUNET_TIME_UNIT_MINUTES), |
@@ -1270,8 +1310,8 @@ host_entered (void *cls, int result, | |||
1270 | { | 1310 | { |
1271 | place_pub_key = *home_pub_key; | 1311 | place_pub_key = *home_pub_key; |
1272 | GNUNET_CRYPTO_hash (&place_pub_key, sizeof (place_pub_key), &place_pub_hash); | 1312 | GNUNET_CRYPTO_hash (&place_pub_key, sizeof (place_pub_key), &place_pub_hash); |
1273 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 1313 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
1274 | "Test #%u: Host entered to place %s\n", | 1314 | "Test #%u: Host entered place %s\n", |
1275 | test, GNUNET_h2s (&place_pub_hash)); | 1315 | test, GNUNET_h2s (&place_pub_hash)); |
1276 | guest_enter (); | 1316 | guest_enter (); |
1277 | } | 1317 | } |
@@ -1285,8 +1325,8 @@ host_enter () | |||
1285 | host_recv_method, host_recv_modifier, | 1325 | host_recv_method, host_recv_modifier, |
1286 | host_recv_data, host_recv_eom, NULL); | 1326 | host_recv_data, host_recv_eom, NULL); |
1287 | 1327 | ||
1288 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 1328 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
1289 | "Test #%u: Entering to place as host.\n", test); | 1329 | "Test #%u: Entering place as host.\n", test); |
1290 | test = TEST_HOST_ENTER; | 1330 | test = TEST_HOST_ENTER; |
1291 | hst = GNUNET_SOCIAL_host_enter (app, host_ego, | 1331 | hst = GNUNET_SOCIAL_host_enter (app, host_ego, |
1292 | GNUNET_PSYC_CHANNEL_PRIVATE, | 1332 | GNUNET_PSYC_CHANNEL_PRIVATE, |
@@ -1306,6 +1346,8 @@ start_app_if_ready () | |||
1306 | { | 1346 | { |
1307 | return; | 1347 | return; |
1308 | } | 1348 | } |
1349 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, | ||
1350 | "starting app...\n"); | ||
1309 | app = GNUNET_SOCIAL_app_connect (cfg, | 1351 | app = GNUNET_SOCIAL_app_connect (cfg, |
1310 | app_id, | 1352 | app_id, |
1311 | app_recv_ego, | 1353 | app_recv_ego, |
@@ -1324,17 +1366,17 @@ identity_ego_cb (void *cls, struct GNUNET_IDENTITY_Ego *ego, | |||
1324 | { | 1366 | { |
1325 | if (ego == identity_host_ego) | 1367 | if (ego == identity_host_ego) |
1326 | { | 1368 | { |
1327 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 1369 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
1328 | "Host ego deleted\n"); | 1370 | "Host ego deleted\n"); |
1329 | } | 1371 | } |
1330 | else if (ego == identity_guest_ego) | 1372 | else if (ego == identity_guest_ego) |
1331 | { | 1373 | { |
1332 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 1374 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
1333 | "Guest ego deleted\n"); | 1375 | "Guest ego deleted\n"); |
1334 | } | 1376 | } |
1335 | else if (0 == strcmp (name, host_name)) | 1377 | else if (0 == strcmp (name, host_name)) |
1336 | { | 1378 | { |
1337 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 1379 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
1338 | "Created ego %s\n", | 1380 | "Created ego %s\n", |
1339 | name); | 1381 | name); |
1340 | identity_host_ego = ego; | 1382 | identity_host_ego = ego; |
@@ -1342,7 +1384,7 @@ identity_ego_cb (void *cls, struct GNUNET_IDENTITY_Ego *ego, | |||
1342 | } | 1384 | } |
1343 | else if (0 == strcmp (name, guest_name)) | 1385 | else if (0 == strcmp (name, guest_name)) |
1344 | { | 1386 | { |
1345 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 1387 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
1346 | "Created guest ego %s\n", | 1388 | "Created guest ego %s\n", |
1347 | name); | 1389 | name); |
1348 | identity_guest_ego = ego; | 1390 | identity_guest_ego = ego; |
@@ -1370,9 +1412,11 @@ run (void *cls, | |||
1370 | #endif | 1412 | #endif |
1371 | { | 1413 | { |
1372 | cfg = c; | 1414 | cfg = c; |
1415 | res = 1; | ||
1373 | end_badly_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT, | 1416 | end_badly_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT, |
1374 | &end_badly, NULL); | 1417 | &end_badly, NULL); |
1375 | 1418 | GNUNET_SCHEDULER_add_shutdown (&end_shutdown, | |
1419 | NULL); | ||
1376 | GNUNET_CRYPTO_get_peer_identity (cfg, &this_peer); | 1420 | GNUNET_CRYPTO_get_peer_identity (cfg, &this_peer); |
1377 | 1421 | ||
1378 | id = GNUNET_IDENTITY_connect (cfg, &identity_ego_cb, NULL); | 1422 | id = GNUNET_IDENTITY_connect (cfg, &identity_ego_cb, NULL); |
diff --git a/src/social/test_social.conf b/src/social/test_social.conf index e69de29bb..7cf858b1c 100644 --- a/src/social/test_social.conf +++ b/src/social/test_social.conf | |||
@@ -0,0 +1,19 @@ | |||
1 | @INLINE@ ../../contrib/no_forcestart.conf | ||
2 | |||
3 | [PATHS] | ||
4 | GNUNET_TEST_HOME = /tmp/gnunet-test-social/ | ||
5 | |||
6 | [social] | ||
7 | FORCESTART = YES | ||
8 | |||
9 | [transport] | ||
10 | PLUGINS = tcp | ||
11 | |||
12 | [nat] | ||
13 | DISABLEV6 = YES | ||
14 | ENABLE_UPNP = NO | ||
15 | BEHIND_NAT = NO | ||
16 | ALLOW_NAT = NO | ||
17 | INTERNAL_ADDRESS = 127.0.0.1 | ||
18 | EXTERNAL_ADDRESS = 127.0.0.1 | ||
19 | |||
diff --git a/src/statistics/gnunet-service-statistics.c b/src/statistics/gnunet-service-statistics.c index 0cb136b99..87e966a01 100644 --- a/src/statistics/gnunet-service-statistics.c +++ b/src/statistics/gnunet-service-statistics.c | |||
@@ -998,7 +998,9 @@ client_disconnect_cb (void *cls, | |||
998 | * | 998 | * |
999 | * @param cls NULL | 999 | * @param cls NULL |
1000 | * @param message the message found on disk | 1000 | * @param message the message found on disk |
1001 | * @return #GNUNET_OK on success, #GNUNET_SYSERR to stop further processing | 1001 | * @return #GNUNET_OK on success, |
1002 | * #GNUNET_NO to stop further processing (no error) | ||
1003 | * #GNUNET_SYSERR to stop further processing with error | ||
1002 | */ | 1004 | */ |
1003 | static int | 1005 | static int |
1004 | inject_message (void *cls, | 1006 | inject_message (void *cls, |
diff --git a/src/testbed/Makefile.am b/src/testbed/Makefile.am index 94b981eee..e858e44b4 100644 --- a/src/testbed/Makefile.am +++ b/src/testbed/Makefile.am | |||
@@ -45,7 +45,7 @@ gnunet_service_testbed_SOURCES = \ | |||
45 | gnunet-service-testbed_oc.c \ | 45 | gnunet-service-testbed_oc.c \ |
46 | gnunet-service-testbed_cpustatus.c \ | 46 | gnunet-service-testbed_cpustatus.c \ |
47 | gnunet-service-testbed_meminfo.c gnunet-service-testbed_meminfo.h \ | 47 | gnunet-service-testbed_meminfo.c gnunet-service-testbed_meminfo.h \ |
48 | gnunet-service-testbed_barriers.c \ | 48 | gnunet-service-testbed_barriers.c gnunet-service-testbed_barriers.h \ |
49 | gnunet-service-testbed_connectionpool.c gnunet-service-testbed_connectionpool.h | 49 | gnunet-service-testbed_connectionpool.c gnunet-service-testbed_connectionpool.h |
50 | gnunet_service_testbed_LDADD = $(XLIB) \ | 50 | gnunet_service_testbed_LDADD = $(XLIB) \ |
51 | $(top_builddir)/src/util/libgnunetutil.la \ | 51 | $(top_builddir)/src/util/libgnunetutil.la \ |
diff --git a/src/testbed/gnunet-daemon-testbed-underlay.c b/src/testbed/gnunet-daemon-testbed-underlay.c index 0b6c44710..3605e0384 100644 --- a/src/testbed/gnunet-daemon-testbed-underlay.c +++ b/src/testbed/gnunet-daemon-testbed-underlay.c | |||
@@ -165,7 +165,8 @@ check_access (void *cls, const struct GNUNET_PeerIdentity * pid) | |||
165 | 165 | ||
166 | 166 | ||
167 | static int | 167 | static int |
168 | get_identity (unsigned int offset, struct GNUNET_PeerIdentity *id) | 168 | get_identity (unsigned int offset, |
169 | struct GNUNET_PeerIdentity *id) | ||
169 | { | 170 | { |
170 | struct GNUNET_CRYPTO_EddsaPrivateKey private_key; | 171 | struct GNUNET_CRYPTO_EddsaPrivateKey private_key; |
171 | 172 | ||
@@ -174,7 +175,8 @@ get_identity (unsigned int offset, struct GNUNET_PeerIdentity *id) | |||
174 | GNUNET_memcpy (&private_key, | 175 | GNUNET_memcpy (&private_key, |
175 | hostkeys_data + (offset * GNUNET_TESTING_HOSTKEYFILESIZE), | 176 | hostkeys_data + (offset * GNUNET_TESTING_HOSTKEYFILESIZE), |
176 | GNUNET_TESTING_HOSTKEYFILESIZE); | 177 | GNUNET_TESTING_HOSTKEYFILESIZE); |
177 | GNUNET_CRYPTO_eddsa_key_get_public (&private_key, &id->public_key); | 178 | GNUNET_CRYPTO_eddsa_key_get_public (&private_key, |
179 | &id->public_key); | ||
178 | return GNUNET_OK; | 180 | return GNUNET_OK; |
179 | } | 181 | } |
180 | 182 | ||
diff --git a/src/testbed/gnunet-helper-testbed.c b/src/testbed/gnunet-helper-testbed.c index 392f257dd..9601e7567 100644 --- a/src/testbed/gnunet-helper-testbed.c +++ b/src/testbed/gnunet-helper-testbed.c | |||
@@ -292,8 +292,9 @@ child_death_task (void *cls) | |||
292 | * | 292 | * |
293 | * @param cls identification of the client | 293 | * @param cls identification of the client |
294 | * @param message the actual message | 294 | * @param message the actual message |
295 | * | 295 | * @return #GNUNET_OK on success, |
296 | * @return #GNUNET_OK on success, #GNUNET_SYSERR to stop further processing | 296 | * #GNUNET_NO to stop further processing (no error) |
297 | * #GNUNET_SYSERR to stop further processing with error | ||
297 | */ | 298 | */ |
298 | static int | 299 | static int |
299 | tokenizer_cb (void *cls, | 300 | tokenizer_cb (void *cls, |
@@ -359,7 +360,7 @@ tokenizer_cb (void *cls, | |||
359 | cfg = GNUNET_CONFIGURATION_create (); | 360 | cfg = GNUNET_CONFIGURATION_create (); |
360 | if (GNUNET_OK != | 361 | if (GNUNET_OK != |
361 | GNUNET_CONFIGURATION_deserialize (cfg, | 362 | GNUNET_CONFIGURATION_deserialize (cfg, |
362 | config, | 363 | config, |
363 | ul_config_size, | 364 | ul_config_size, |
364 | NULL)) | 365 | NULL)) |
365 | { | 366 | { |
diff --git a/src/testbed/gnunet-service-testbed_oc.c b/src/testbed/gnunet-service-testbed_oc.c index 09849797c..11c45a0f5 100644 --- a/src/testbed/gnunet-service-testbed_oc.c +++ b/src/testbed/gnunet-service-testbed_oc.c | |||
@@ -261,7 +261,7 @@ struct OverlayConnectContext | |||
261 | enum OverlayConnectContextType type; | 261 | enum OverlayConnectContextType type; |
262 | 262 | ||
263 | /** | 263 | /** |
264 | * The id of the second peer which is has to connect to the first peer | 264 | * The id of the second peer which has to connect to the first peer |
265 | */ | 265 | */ |
266 | uint32_t other_peer_id; | 266 | uint32_t other_peer_id; |
267 | }; | 267 | }; |
@@ -930,10 +930,10 @@ send_hello (void *cls) | |||
930 | other_peer_str); | 930 | other_peer_str); |
931 | GNUNET_free (other_peer_str); | 931 | GNUNET_free (other_peer_str); |
932 | lp2c->ohh = | 932 | lp2c->ohh = |
933 | GNUNET_TRANSPORT_offer_hello (lp2c->tcc.cfg, | 933 | GNUNET_TRANSPORT_offer_hello (lp2c->tcc.cfg, |
934 | occ->hello, | 934 | occ->hello, |
935 | &occ_hello_sent_cb, | 935 | &occ_hello_sent_cb, |
936 | occ); | 936 | occ); |
937 | if (NULL == lp2c->ohh) | 937 | if (NULL == lp2c->ohh) |
938 | { | 938 | { |
939 | GNUNET_break (0); | 939 | GNUNET_break (0); |
@@ -1001,6 +1001,11 @@ p2_transport_connect (struct OverlayConnectContext *occ) | |||
1001 | { | 1001 | { |
1002 | struct Peer *peer2; | 1002 | struct Peer *peer2; |
1003 | 1003 | ||
1004 | /* HUH? Why to *obtain* HELLO? Seems we use this to *SEND* the | ||
1005 | HELLO! */ | ||
1006 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1007 | "Connecting to transport of peer %s to obtain HELLO\n", | ||
1008 | GNUNET_i2s (&occ->other_peer_identity)); | ||
1004 | GNUNET_assert (NULL == occ->emsg); | 1009 | GNUNET_assert (NULL == occ->emsg); |
1005 | GNUNET_assert (NULL != occ->hello); | 1010 | GNUNET_assert (NULL != occ->hello); |
1006 | GNUNET_assert (NULL == occ->ghh); | 1011 | GNUNET_assert (NULL == occ->ghh); |
diff --git a/src/testbed/gnunet-testbed-profiler.c b/src/testbed/gnunet-testbed-profiler.c index 9829bbf0d..0fa6d8172 100644 --- a/src/testbed/gnunet-testbed-profiler.c +++ b/src/testbed/gnunet-testbed-profiler.c | |||
@@ -175,9 +175,7 @@ controller_event_cb (void *cls, | |||
175 | { | 175 | { |
176 | printf ("\nAborting due to very high failure rate\n"); | 176 | printf ("\nAborting due to very high failure rate\n"); |
177 | print_overlay_links_summary (); | 177 | print_overlay_links_summary (); |
178 | if (NULL != abort_task) | 178 | GNUNET_SCHEDULER_shutdown (); |
179 | GNUNET_SCHEDULER_cancel (abort_task); | ||
180 | abort_task = GNUNET_SCHEDULER_add_now (&do_abort, NULL); | ||
181 | return; | 179 | return; |
182 | } | 180 | } |
183 | } | 181 | } |
@@ -260,11 +258,12 @@ run (void *cls, char *const *args, const char *cfgfile, | |||
260 | event_mask = 0; | 258 | event_mask = 0; |
261 | event_mask |= (1LL << GNUNET_TESTBED_ET_CONNECT); | 259 | event_mask |= (1LL << GNUNET_TESTBED_ET_CONNECT); |
262 | event_mask |= (1LL << GNUNET_TESTBED_ET_OPERATION_FINISHED); | 260 | event_mask |= (1LL << GNUNET_TESTBED_ET_OPERATION_FINISHED); |
263 | GNUNET_TESTBED_run (hosts_file, cfg, num_peers, event_mask, controller_event_cb, | 261 | GNUNET_TESTBED_run (hosts_file, cfg, num_peers, event_mask, |
264 | NULL, &test_run, NULL); | 262 | &controller_event_cb, NULL, |
263 | &test_run, NULL); | ||
265 | abort_task = | 264 | abort_task = |
266 | GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL, &do_abort, | 265 | GNUNET_SCHEDULER_add_shutdown (&do_abort, |
267 | NULL); | 266 | NULL); |
268 | } | 267 | } |
269 | 268 | ||
270 | 269 | ||
@@ -310,6 +309,8 @@ main (int argc, char *const *argv) | |||
310 | const char *binaryHelp = "gnunet-testbed-profiler [OPTIONS]"; | 309 | const char *binaryHelp = "gnunet-testbed-profiler [OPTIONS]"; |
311 | int ret; | 310 | int ret; |
312 | 311 | ||
312 | unsetenv ("XDG_DATA_HOME"); | ||
313 | unsetenv ("XDG_CONFIG_HOME"); | ||
313 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) | 314 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) |
314 | return 2; | 315 | return 2; |
315 | result = GNUNET_SYSERR; | 316 | result = GNUNET_SYSERR; |
diff --git a/src/transport/Makefile.am b/src/transport/Makefile.am index d65da6bb6..e8c1f5d4a 100644 --- a/src/transport/Makefile.am +++ b/src/transport/Makefile.am | |||
@@ -295,7 +295,7 @@ noinst_LTLIBRARIES = \ | |||
295 | libgnunet_plugin_transport_template.la | 295 | libgnunet_plugin_transport_template.la |
296 | 296 | ||
297 | libgnunet_plugin_transport_tcp_la_SOURCES = \ | 297 | libgnunet_plugin_transport_tcp_la_SOURCES = \ |
298 | plugin_transport_tcp.c | 298 | plugin_transport_tcp.c |
299 | libgnunet_plugin_transport_tcp_la_LIBADD = \ | 299 | libgnunet_plugin_transport_tcp_la_LIBADD = \ |
300 | $(top_builddir)/src/hello/libgnunethello.la \ | 300 | $(top_builddir)/src/hello/libgnunethello.la \ |
301 | $(top_builddir)/src/statistics/libgnunetstatistics.la \ | 301 | $(top_builddir)/src/statistics/libgnunetstatistics.la \ |
@@ -1330,7 +1330,6 @@ test_transport_api_monitor_peers_peer2.conf\ | |||
1330 | test_transport_api_monitor_validation_peer1.conf\ | 1330 | test_transport_api_monitor_validation_peer1.conf\ |
1331 | test_transport_api_monitor_validation_peer2.conf\ | 1331 | test_transport_api_monitor_validation_peer2.conf\ |
1332 | test_transport_defaults.conf\ | 1332 | test_transport_defaults.conf\ |
1333 | test_transport_startonly.conf\ | ||
1334 | test_transport_api_disconnect_tcp_peer1.conf\ | 1333 | test_transport_api_disconnect_tcp_peer1.conf\ |
1335 | test_transport_api_disconnect_tcp_peer2.conf\ | 1334 | test_transport_api_disconnect_tcp_peer2.conf\ |
1336 | test_transport_api_timeout_http_peer1.conf\ | 1335 | test_transport_api_timeout_http_peer1.conf\ |
@@ -1350,4 +1349,8 @@ test_transport_api_http_reverse_peer2.conf \ | |||
1350 | perf_tcp_peer1.conf \ | 1349 | perf_tcp_peer1.conf \ |
1351 | perf_tcp_peer2.conf \ | 1350 | perf_tcp_peer2.conf \ |
1352 | test_transport_api_slow_ats_peer1.conf \ | 1351 | test_transport_api_slow_ats_peer1.conf \ |
1353 | test_transport_api_slow_ats_peer2.conf | 1352 | test_transport_api_slow_ats_peer2.conf \ |
1353 | tcp_connection_legacy.c \ | ||
1354 | tcp_server_mst_legacy.c \ | ||
1355 | tcp_server_legacy.c \ | ||
1356 | tcp_service_legacy.c | ||
diff --git a/src/transport/gnunet-helper-transport-wlan-dummy.c b/src/transport/gnunet-helper-transport-wlan-dummy.c index 63ed9c4b7..f02d8bdd7 100644 --- a/src/transport/gnunet-helper-transport-wlan-dummy.c +++ b/src/transport/gnunet-helper-transport-wlan-dummy.c | |||
@@ -121,6 +121,9 @@ send_mac_to_plugin (char *buffer, struct GNUNET_TRANSPORT_WLAN_MacAddress *mac) | |||
121 | * | 121 | * |
122 | * @param cls the 'struct SendBuffer' to copy the converted message to | 122 | * @param cls the 'struct SendBuffer' to copy the converted message to |
123 | * @param hdr inbound message from the FIFO | 123 | * @param hdr inbound message from the FIFO |
124 | * @return #GNUNET_OK on success, | ||
125 | * #GNUNET_NO to stop further processing (no error) | ||
126 | * #GNUNET_SYSERR to stop further processing with error | ||
124 | */ | 127 | */ |
125 | static int | 128 | static int |
126 | stdin_send (void *cls, | 129 | stdin_send (void *cls, |
@@ -167,6 +170,9 @@ stdin_send (void *cls, | |||
167 | * | 170 | * |
168 | * @param cls the 'struct SendBuffer' to copy to | 171 | * @param cls the 'struct SendBuffer' to copy to |
169 | * @param hdr the message we received to copy to the buffer | 172 | * @param hdr the message we received to copy to the buffer |
173 | * @return #GNUNET_OK on success, | ||
174 | * #GNUNET_NO to stop further processing (no error) | ||
175 | * #GNUNET_SYSERR to stop further processing with error | ||
170 | */ | 176 | */ |
171 | static int | 177 | static int |
172 | file_in_send (void *cls, | 178 | file_in_send (void *cls, |
diff --git a/src/transport/gnunet-service-transport.c b/src/transport/gnunet-service-transport.c index 6b354df98..124260c41 100644 --- a/src/transport/gnunet-service-transport.c +++ b/src/transport/gnunet-service-transport.c | |||
@@ -688,6 +688,8 @@ handle_client_hello (void *cls, | |||
688 | { | 688 | { |
689 | struct TransportClient *tc = cls; | 689 | struct TransportClient *tc = cls; |
690 | 690 | ||
691 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | ||
692 | "Received HELLO message\n"); | ||
691 | GST_validation_handle_hello (message); | 693 | GST_validation_handle_hello (message); |
692 | GNUNET_SERVICE_client_continue (tc->client); | 694 | GNUNET_SERVICE_client_continue (tc->client); |
693 | } | 695 | } |
@@ -2802,7 +2804,7 @@ run (void *cls, | |||
2802 | GNUNET_assert (NULL != GST_my_private_key); | 2804 | GNUNET_assert (NULL != GST_my_private_key); |
2803 | 2805 | ||
2804 | GNUNET_log(GNUNET_ERROR_TYPE_INFO, | 2806 | GNUNET_log(GNUNET_ERROR_TYPE_INFO, |
2805 | "My identity is `%4s'\n", | 2807 | "My identity is `%s'\n", |
2806 | GNUNET_i2s_full (&GST_my_identity)); | 2808 | GNUNET_i2s_full (&GST_my_identity)); |
2807 | 2809 | ||
2808 | GNUNET_SCHEDULER_add_shutdown (&shutdown_task, | 2810 | GNUNET_SCHEDULER_add_shutdown (&shutdown_task, |
diff --git a/src/transport/gnunet-service-transport_validation.c b/src/transport/gnunet-service-transport_validation.c index 27c3c7041..cd5aeb5e2 100644 --- a/src/transport/gnunet-service-transport_validation.c +++ b/src/transport/gnunet-service-transport_validation.c | |||
@@ -1347,6 +1347,9 @@ GST_validation_handle_address (const struct GNUNET_HELLO_Address *address) | |||
1347 | if (NULL == papi) | 1347 | if (NULL == papi) |
1348 | { | 1348 | { |
1349 | /* This plugin is currently unvailable ... ignore */ | 1349 | /* This plugin is currently unvailable ... ignore */ |
1350 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | ||
1351 | "No plugin available for %s\n", | ||
1352 | address->transport_name); | ||
1350 | return; | 1353 | return; |
1351 | } | 1354 | } |
1352 | ve = find_validation_entry (address); | 1355 | ve = find_validation_entry (address); |
@@ -1358,6 +1361,13 @@ GST_validation_handle_address (const struct GNUNET_HELLO_Address *address) | |||
1358 | GNUNET_i2s (&ve->address->peer)); | 1361 | GNUNET_i2s (&ve->address->peer)); |
1359 | ve->revalidation_task = GNUNET_SCHEDULER_add_now (&revalidate_address, ve); | 1362 | ve->revalidation_task = GNUNET_SCHEDULER_add_now (&revalidate_address, ve); |
1360 | } | 1363 | } |
1364 | else | ||
1365 | { | ||
1366 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | ||
1367 | "Validation already running for address `%s' of %s\n", | ||
1368 | GST_plugins_a2s (ve->address), | ||
1369 | GNUNET_i2s (&ve->address->peer)); | ||
1370 | } | ||
1361 | } | 1371 | } |
1362 | 1372 | ||
1363 | 1373 | ||
@@ -1657,6 +1667,9 @@ GST_validation_handle_hello (const struct GNUNET_MessageHeader *hello) | |||
1657 | sizeof (struct GNUNET_PeerIdentity))) | 1667 | sizeof (struct GNUNET_PeerIdentity))) |
1658 | { | 1668 | { |
1659 | /* got our own HELLO, how boring */ | 1669 | /* got our own HELLO, how boring */ |
1670 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1671 | "Validation received our own HELLO (%s), ignoring\n", | ||
1672 | GNUNET_i2s (&pid)); | ||
1660 | return GNUNET_OK; | 1673 | return GNUNET_OK; |
1661 | } | 1674 | } |
1662 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 1675 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
diff --git a/src/transport/plugin_transport_http_server.c b/src/transport/plugin_transport_http_server.c index d9fade44f..6a9c1b0ba 100644 --- a/src/transport/plugin_transport_http_server.c +++ b/src/transport/plugin_transport_http_server.c | |||
@@ -1651,7 +1651,7 @@ server_send_callback (void *cls, | |||
1651 | * | 1651 | * |
1652 | * @param cls current session as closure | 1652 | * @param cls current session as closure |
1653 | * @param message the message to be forwarded to transport service | 1653 | * @param message the message to be forwarded to transport service |
1654 | * @return #GNUNET_OK | 1654 | * @return #GNUNET_OK (all OK) |
1655 | */ | 1655 | */ |
1656 | static int | 1656 | static int |
1657 | server_receive_mst_cb (void *cls, | 1657 | server_receive_mst_cb (void *cls, |
diff --git a/src/util/client.c b/src/util/client.c index 3d74bff33..e5bf7e176 100644 --- a/src/util/client.c +++ b/src/util/client.c | |||
@@ -261,14 +261,27 @@ transmit_ready (void *cls) | |||
261 | pos = (const char *) cstate->msg; | 261 | pos = (const char *) cstate->msg; |
262 | len = ntohs (cstate->msg->size); | 262 | len = ntohs (cstate->msg->size); |
263 | GNUNET_assert (cstate->msg_off < len); | 263 | GNUNET_assert (cstate->msg_off < len); |
264 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
265 | "client: message of type %u trying to send with socket %p (MQ: %p\n", | ||
266 | ntohs(cstate->msg->type), | ||
267 | cstate->sock, | ||
268 | cstate->mq); | ||
269 | |||
264 | RETRY: | 270 | RETRY: |
265 | ret = GNUNET_NETWORK_socket_send (cstate->sock, | 271 | ret = GNUNET_NETWORK_socket_send (cstate->sock, |
266 | &pos[cstate->msg_off], | 272 | &pos[cstate->msg_off], |
267 | len - cstate->msg_off); | 273 | len - cstate->msg_off); |
268 | if (-1 == ret) | 274 | if (-1 == ret) |
269 | { | 275 | { |
270 | if (EINTR == errno) | 276 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, |
277 | "client: error during sending message of type %u\n", | ||
278 | ntohs(cstate->msg->type)); | ||
279 | if (EINTR == errno){ | ||
280 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
281 | "client: retrying message of type %u\n", | ||
282 | ntohs(cstate->msg->type)); | ||
271 | goto RETRY; | 283 | goto RETRY; |
284 | } | ||
272 | GNUNET_MQ_inject_error (cstate->mq, | 285 | GNUNET_MQ_inject_error (cstate->mq, |
273 | GNUNET_MQ_ERROR_WRITE); | 286 | GNUNET_MQ_ERROR_WRITE); |
274 | return; | 287 | return; |
@@ -277,6 +290,9 @@ transmit_ready (void *cls) | |||
277 | cstate->msg_off += ret; | 290 | cstate->msg_off += ret; |
278 | if (cstate->msg_off < len) | 291 | if (cstate->msg_off < len) |
279 | { | 292 | { |
293 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
294 | "client: rescheduling message of type %u\n", | ||
295 | ntohs(cstate->msg->type)); | ||
280 | cstate->send_task | 296 | cstate->send_task |
281 | = GNUNET_SCHEDULER_add_write_net (GNUNET_TIME_UNIT_FOREVER_REL, | 297 | = GNUNET_SCHEDULER_add_write_net (GNUNET_TIME_UNIT_FOREVER_REL, |
282 | cstate->sock, | 298 | cstate->sock, |
@@ -286,6 +302,9 @@ transmit_ready (void *cls) | |||
286 | GNUNET_MQ_impl_send_in_flight (cstate->mq); | 302 | GNUNET_MQ_impl_send_in_flight (cstate->mq); |
287 | return; | 303 | return; |
288 | } | 304 | } |
305 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
306 | "client: sending message of type %u successful\n", | ||
307 | ntohs(cstate->msg->type)); | ||
289 | cstate->msg = NULL; | 308 | cstate->msg = NULL; |
290 | GNUNET_MQ_impl_send_continue (cstate->mq); | 309 | GNUNET_MQ_impl_send_continue (cstate->mq); |
291 | } | 310 | } |
@@ -297,7 +316,9 @@ transmit_ready (void *cls) | |||
297 | * | 316 | * |
298 | * @param cls the `struct ClientState` | 317 | * @param cls the `struct ClientState` |
299 | * @param msg message we received. | 318 | * @param msg message we received. |
300 | * @return #GNUNET_OK on success, #GNUNET_SYSERR to stop further processing | 319 | * @return #GNUNET_OK on success, |
320 | * #GNUNET_NO to stop further processing due to disconnect (no error) | ||
321 | * #GNUNET_SYSERR to stop further processing due to error | ||
301 | */ | 322 | */ |
302 | static int | 323 | static int |
303 | recv_message (void *cls, | 324 | recv_message (void *cls, |
@@ -306,7 +327,7 @@ recv_message (void *cls, | |||
306 | struct ClientState *cstate = cls; | 327 | struct ClientState *cstate = cls; |
307 | 328 | ||
308 | if (GNUNET_YES == cstate->in_destroy) | 329 | if (GNUNET_YES == cstate->in_destroy) |
309 | return GNUNET_SYSERR; | 330 | return GNUNET_NO; |
310 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 331 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
311 | "Received message of type %u and size %u from %s\n", | 332 | "Received message of type %u and size %u from %s\n", |
312 | ntohs (msg->type), | 333 | ntohs (msg->type), |
@@ -315,7 +336,7 @@ recv_message (void *cls, | |||
315 | GNUNET_MQ_inject_message (cstate->mq, | 336 | GNUNET_MQ_inject_message (cstate->mq, |
316 | msg); | 337 | msg); |
317 | if (GNUNET_YES == cstate->in_destroy) | 338 | if (GNUNET_YES == cstate->in_destroy) |
318 | return GNUNET_SYSERR; | 339 | return GNUNET_NO; |
319 | return GNUNET_OK; | 340 | return GNUNET_OK; |
320 | } | 341 | } |
321 | 342 | ||
@@ -371,8 +392,12 @@ connection_client_destroy_impl (struct GNUNET_MQ_Handle *mq, | |||
371 | GNUNET_SCHEDULER_cancel (cstate->recv_task); | 392 | GNUNET_SCHEDULER_cancel (cstate->recv_task); |
372 | if (NULL != cstate->retry_task) | 393 | if (NULL != cstate->retry_task) |
373 | GNUNET_SCHEDULER_cancel (cstate->retry_task); | 394 | GNUNET_SCHEDULER_cancel (cstate->retry_task); |
374 | if (NULL != cstate->sock) | 395 | if (NULL != cstate->sock){ |
396 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
397 | "client: destroying socket: %p\n", | ||
398 | cstate->sock); | ||
375 | GNUNET_NETWORK_socket_close (cstate->sock); | 399 | GNUNET_NETWORK_socket_close (cstate->sock); |
400 | } | ||
376 | cancel_aps (cstate); | 401 | cancel_aps (cstate); |
377 | GNUNET_free (cstate->service_name); | 402 | GNUNET_free (cstate->service_name); |
378 | GNUNET_free_non_null (cstate->hostname); | 403 | GNUNET_free_non_null (cstate->hostname); |
@@ -794,8 +819,12 @@ connection_client_send_impl (struct GNUNET_MQ_Handle *mq, | |||
794 | GNUNET_assert (NULL == cstate->send_task); | 819 | GNUNET_assert (NULL == cstate->send_task); |
795 | cstate->msg = msg; | 820 | cstate->msg = msg; |
796 | cstate->msg_off = 0; | 821 | cstate->msg_off = 0; |
797 | if (NULL == cstate->sock) | 822 | if (NULL == cstate->sock){ |
823 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
824 | "client: message of type %u waiting for socket\n", | ||
825 | ntohs(msg->type)); | ||
798 | return; /* still waiting for connection */ | 826 | return; /* still waiting for connection */ |
827 | } | ||
799 | cstate->send_task | 828 | cstate->send_task |
800 | = GNUNET_SCHEDULER_add_write_net (GNUNET_TIME_UNIT_FOREVER_REL, | 829 | = GNUNET_SCHEDULER_add_write_net (GNUNET_TIME_UNIT_FOREVER_REL, |
801 | cstate->sock, | 830 | cstate->sock, |
diff --git a/src/util/mq.c b/src/util/mq.c index 90b2aa968..8d71359ac 100644 --- a/src/util/mq.c +++ b/src/util/mq.c | |||
@@ -357,6 +357,12 @@ GNUNET_MQ_send (struct GNUNET_MQ_Handle *mq, | |||
357 | } | 357 | } |
358 | GNUNET_assert (NULL == mq->envelope_head); | 358 | GNUNET_assert (NULL == mq->envelope_head); |
359 | mq->current_envelope = ev; | 359 | mq->current_envelope = ev; |
360 | |||
361 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
362 | "mq: sending message of type %u, queue empty (MQ: %p)\n", | ||
363 | ntohs(ev->mh->type), | ||
364 | mq); | ||
365 | |||
360 | mq->send_impl (mq, | 366 | mq->send_impl (mq, |
361 | ev->mh, | 367 | ev->mh, |
362 | mq->impl_state); | 368 | mq->impl_state); |
@@ -452,6 +458,11 @@ impl_send_continue (void *cls) | |||
452 | GNUNET_CONTAINER_DLL_remove (mq->envelope_head, | 458 | GNUNET_CONTAINER_DLL_remove (mq->envelope_head, |
453 | mq->envelope_tail, | 459 | mq->envelope_tail, |
454 | mq->current_envelope); | 460 | mq->current_envelope); |
461 | |||
462 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
463 | "mq: sending message of type %u from queue\n", | ||
464 | ntohs(mq->current_envelope->mh->type)); | ||
465 | |||
455 | mq->send_impl (mq, | 466 | mq->send_impl (mq, |
456 | mq->current_envelope->mh, | 467 | mq->current_envelope->mh, |
457 | mq->impl_state); | 468 | mq->impl_state); |
@@ -840,6 +851,9 @@ GNUNET_MQ_destroy (struct GNUNET_MQ_Handle *mq) | |||
840 | ev); | 851 | ev); |
841 | GNUNET_assert (0 < mq->queue_length); | 852 | GNUNET_assert (0 < mq->queue_length); |
842 | mq->queue_length--; | 853 | mq->queue_length--; |
854 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | ||
855 | "MQ destroy drops message of type %u\n", | ||
856 | ntohs (ev->mh->type)); | ||
843 | GNUNET_MQ_discard (ev); | 857 | GNUNET_MQ_discard (ev); |
844 | } | 858 | } |
845 | if (NULL != mq->current_envelope) | 859 | if (NULL != mq->current_envelope) |
@@ -847,6 +861,9 @@ GNUNET_MQ_destroy (struct GNUNET_MQ_Handle *mq) | |||
847 | /* we can only discard envelopes that | 861 | /* we can only discard envelopes that |
848 | * are not queued! */ | 862 | * are not queued! */ |
849 | mq->current_envelope->parent_queue = NULL; | 863 | mq->current_envelope->parent_queue = NULL; |
864 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | ||
865 | "MQ destroy drops current message of type %u\n", | ||
866 | ntohs (mq->current_envelope->mh->type)); | ||
850 | GNUNET_MQ_discard (mq->current_envelope); | 867 | GNUNET_MQ_discard (mq->current_envelope); |
851 | mq->current_envelope = NULL; | 868 | mq->current_envelope = NULL; |
852 | GNUNET_assert (0 < mq->queue_length); | 869 | GNUNET_assert (0 < mq->queue_length); |
@@ -928,6 +945,11 @@ GNUNET_MQ_send_cancel (struct GNUNET_MQ_Envelope *ev) | |||
928 | GNUNET_CONTAINER_DLL_remove (mq->envelope_head, | 945 | GNUNET_CONTAINER_DLL_remove (mq->envelope_head, |
929 | mq->envelope_tail, | 946 | mq->envelope_tail, |
930 | mq->current_envelope); | 947 | mq->current_envelope); |
948 | |||
949 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
950 | "mq: sending canceled message of type %u queue\n", | ||
951 | ntohs(ev->mh->type)); | ||
952 | |||
931 | mq->send_impl (mq, | 953 | mq->send_impl (mq, |
932 | mq->current_envelope->mh, | 954 | mq->current_envelope->mh, |
933 | mq->impl_state); | 955 | mq->impl_state); |
diff --git a/src/util/mst.c b/src/util/mst.c index 0d90c5d10..5e472965f 100644 --- a/src/util/mst.c +++ b/src/util/mst.c | |||
@@ -1,6 +1,6 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of GNUnet. | 2 | This file is part of GNUnet. |
3 | Copyright (C) 2010, 2016 GNUnet e.V. | 3 | Copyright (C) 2010, 2016, 2017 GNUnet e.V. |
4 | 4 | ||
5 | GNUnet is free software; you can redistribute it and/or modify | 5 | GNUnet is free software; you can redistribute it and/or modify |
6 | it under the terms of the GNU General Public License as published | 6 | it under the terms of the GNU General Public License as published |
@@ -126,6 +126,7 @@ GNUNET_MST_from_buffer (struct GNUNET_MessageStreamTokenizer *mst, | |||
126 | int need_align; | 126 | int need_align; |
127 | unsigned long offset; | 127 | unsigned long offset; |
128 | int ret; | 128 | int ret; |
129 | int cbret; | ||
129 | 130 | ||
130 | GNUNET_assert (mst->off <= mst->pos); | 131 | GNUNET_assert (mst->off <= mst->pos); |
131 | GNUNET_assert (mst->pos <= mst->curr_buf); | 132 | GNUNET_assert (mst->pos <= mst->curr_buf); |
@@ -229,9 +230,17 @@ do_align: | |||
229 | if (one_shot == GNUNET_YES) | 230 | if (one_shot == GNUNET_YES) |
230 | one_shot = GNUNET_SYSERR; | 231 | one_shot = GNUNET_SYSERR; |
231 | mst->off += want; | 232 | mst->off += want; |
232 | if (GNUNET_SYSERR == mst->cb (mst->cb_cls, | 233 | if (GNUNET_OK != |
233 | hdr)) | 234 | (cbret = mst->cb (mst->cb_cls, |
235 | hdr))) | ||
236 | { | ||
237 | if (GNUNET_SYSERR == cbret) | ||
238 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | ||
239 | "Failure processing message of type %u and size %u\n", | ||
240 | ntohs (hdr->type), | ||
241 | ntohs (hdr->size)); | ||
234 | return GNUNET_SYSERR; | 242 | return GNUNET_SYSERR; |
243 | } | ||
235 | if (mst->off == mst->pos) | 244 | if (mst->off == mst->pos) |
236 | { | 245 | { |
237 | /* reset to beginning of buffer, it's free right now! */ | 246 | /* reset to beginning of buffer, it's free right now! */ |
@@ -271,9 +280,17 @@ do_align: | |||
271 | } | 280 | } |
272 | if (one_shot == GNUNET_YES) | 281 | if (one_shot == GNUNET_YES) |
273 | one_shot = GNUNET_SYSERR; | 282 | one_shot = GNUNET_SYSERR; |
274 | if (GNUNET_SYSERR == mst->cb (mst->cb_cls, | 283 | if (GNUNET_OK != |
275 | hdr)) | 284 | (cbret = mst->cb (mst->cb_cls, |
285 | hdr))) | ||
286 | { | ||
287 | if (GNUNET_SYSERR == cbret) | ||
288 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | ||
289 | "Failure processing message of type %u and size %u\n", | ||
290 | ntohs (hdr->type), | ||
291 | ntohs (hdr->size)); | ||
276 | return GNUNET_SYSERR; | 292 | return GNUNET_SYSERR; |
293 | } | ||
277 | buf += want; | 294 | buf += want; |
278 | size -= want; | 295 | size -= want; |
279 | } | 296 | } |
diff --git a/src/util/network.c b/src/util/network.c index 942288613..cf5ef3e00 100644 --- a/src/util/network.c +++ b/src/util/network.c | |||
@@ -1223,7 +1223,7 @@ GNUNET_NETWORK_fdset_copy (struct GNUNET_NETWORK_FDSet *to, | |||
1223 | * @return POSIX file descriptor | 1223 | * @return POSIX file descriptor |
1224 | */ | 1224 | */ |
1225 | int | 1225 | int |
1226 | GNUNET_NETWORK_get_fd (struct GNUNET_NETWORK_Handle *desc) | 1226 | GNUNET_NETWORK_get_fd (const struct GNUNET_NETWORK_Handle *desc) |
1227 | { | 1227 | { |
1228 | return desc->fd; | 1228 | return desc->fd; |
1229 | } | 1229 | } |
@@ -1236,7 +1236,7 @@ GNUNET_NETWORK_get_fd (struct GNUNET_NETWORK_Handle *desc) | |||
1236 | * @return sockaddr | 1236 | * @return sockaddr |
1237 | */ | 1237 | */ |
1238 | struct sockaddr* | 1238 | struct sockaddr* |
1239 | GNUNET_NETWORK_get_addr (struct GNUNET_NETWORK_Handle *desc) | 1239 | GNUNET_NETWORK_get_addr (const struct GNUNET_NETWORK_Handle *desc) |
1240 | { | 1240 | { |
1241 | return desc->addr; | 1241 | return desc->addr; |
1242 | } | 1242 | } |
@@ -1249,7 +1249,7 @@ GNUNET_NETWORK_get_addr (struct GNUNET_NETWORK_Handle *desc) | |||
1249 | * @return socklen_t for sockaddr | 1249 | * @return socklen_t for sockaddr |
1250 | */ | 1250 | */ |
1251 | socklen_t | 1251 | socklen_t |
1252 | GNUNET_NETWORK_get_addrlen (struct GNUNET_NETWORK_Handle *desc) | 1252 | GNUNET_NETWORK_get_addrlen (const struct GNUNET_NETWORK_Handle *desc) |
1253 | { | 1253 | { |
1254 | return desc->addrlen; | 1254 | return desc->addrlen; |
1255 | } | 1255 | } |
diff --git a/src/util/program.c b/src/util/program.c index 92a9750f3..233792387 100644 --- a/src/util/program.c +++ b/src/util/program.c | |||
@@ -69,6 +69,16 @@ struct CommandContext | |||
69 | 69 | ||
70 | 70 | ||
71 | /** | 71 | /** |
72 | * task run when the scheduler shuts down | ||
73 | */ | ||
74 | static void | ||
75 | shutdown_task (void *cls) | ||
76 | { | ||
77 | GNUNET_SPEEDUP_stop_ (); | ||
78 | } | ||
79 | |||
80 | |||
81 | /** | ||
72 | * Initial task called by the scheduler for each | 82 | * Initial task called by the scheduler for each |
73 | * program. Runs the program-specific main task. | 83 | * program. Runs the program-specific main task. |
74 | */ | 84 | */ |
@@ -78,6 +88,7 @@ program_main (void *cls) | |||
78 | struct CommandContext *cc = cls; | 88 | struct CommandContext *cc = cls; |
79 | 89 | ||
80 | GNUNET_SPEEDUP_start_(cc->cfg); | 90 | GNUNET_SPEEDUP_start_(cc->cfg); |
91 | GNUNET_SCHEDULER_add_shutdown (&shutdown_task, NULL); | ||
81 | GNUNET_RESOLVER_connect (cc->cfg); | 92 | GNUNET_RESOLVER_connect (cc->cfg); |
82 | cc->task (cc->task_cls, cc->args, cc->cfgfile, cc->cfg); | 93 | cc->task (cc->task_cls, cc->args, cc->cfgfile, cc->cfg); |
83 | } | 94 | } |
@@ -306,7 +317,6 @@ GNUNET_PROGRAM_run2 (int argc, char *const *argv, const char *binaryName, | |||
306 | } | 317 | } |
307 | ret = GNUNET_OK; | 318 | ret = GNUNET_OK; |
308 | cleanup: | 319 | cleanup: |
309 | GNUNET_SPEEDUP_stop_ (); | ||
310 | GNUNET_CONFIGURATION_destroy (cfg); | 320 | GNUNET_CONFIGURATION_destroy (cfg); |
311 | GNUNET_free_non_null (cc.cfgfile); | 321 | GNUNET_free_non_null (cc.cfgfile); |
312 | GNUNET_free (cfg_fn); | 322 | GNUNET_free (cfg_fn); |
diff --git a/src/util/scheduler.c b/src/util/scheduler.c index 540a60557..b96e4e6c4 100644 --- a/src/util/scheduler.c +++ b/src/util/scheduler.c | |||
@@ -89,12 +89,6 @@ struct GNUNET_SCHEDULER_Handle | |||
89 | * @deprecated | 89 | * @deprecated |
90 | */ | 90 | */ |
91 | struct GNUNET_NETWORK_FDSet *ws; | 91 | struct GNUNET_NETWORK_FDSet *ws; |
92 | |||
93 | /** | ||
94 | * Driver we used for the event loop. | ||
95 | */ | ||
96 | const struct GNUNET_SCHEDULER_Driver *driver; | ||
97 | |||
98 | }; | 92 | }; |
99 | 93 | ||
100 | 94 | ||
@@ -124,36 +118,40 @@ struct GNUNET_SCHEDULER_Task | |||
124 | void *callback_cls; | 118 | void *callback_cls; |
125 | 119 | ||
126 | /** | 120 | /** |
127 | * Handle to the scheduler's state. | 121 | * Information about which FDs are ready for this task (and why). |
128 | */ | 122 | */ |
129 | const struct GNUNET_SCHEDULER_Handle *sh; | 123 | struct GNUNET_SCHEDULER_FdInfo *fds; |
130 | 124 | ||
131 | /** | 125 | /** |
132 | * Set of file descriptors this task is waiting | 126 | * Storage location used for @e fds if we want to avoid |
133 | * for for reading. Once ready, this is updated | 127 | * a separate malloc() call in the common case that this |
134 | * to reflect the set of file descriptors ready | 128 | * task is only about a single FD. |
135 | * for operation. | ||
136 | */ | 129 | */ |
137 | struct GNUNET_NETWORK_FDSet *read_set; | 130 | struct GNUNET_SCHEDULER_FdInfo fdx; |
138 | 131 | ||
139 | /** | 132 | /** |
140 | * Set of file descriptors this task is waiting for for writing. | 133 | * Size of the @e fds array. |
141 | * Once ready, this is updated to reflect the set of file | ||
142 | * descriptors ready for operation. | ||
143 | */ | 134 | */ |
144 | struct GNUNET_NETWORK_FDSet *write_set; | 135 | unsigned int fds_len; |
145 | 136 | ||
146 | /** | 137 | /** |
147 | * Information about which FDs are ready for this task (and why). | 138 | * if this task is related to multiple FDs this array contains |
139 | * all FdInfo structs that were marked as ready by calling | ||
140 | * #GNUNET_SCHEDULER_task_ready | ||
148 | */ | 141 | */ |
149 | const struct GNUNET_SCHEDULER_FdInfo *fds; | 142 | struct GNUNET_SCHEDULER_FdInfo *ready_fds; |
150 | 143 | ||
151 | /** | 144 | /** |
152 | * Storage location used for @e fds if we want to avoid | 145 | * Size of the @e ready_fds array |
153 | * a separate malloc() call in the common case that this | ||
154 | * task is only about a single FD. | ||
155 | */ | 146 | */ |
156 | struct GNUNET_SCHEDULER_FdInfo fdx; | 147 | unsigned int ready_fds_len; |
148 | |||
149 | /** | ||
150 | * Do we own the network and file handles referenced by the FdInfo | ||
151 | * structs in the fds array. This will only be GNUNET_YES if the | ||
152 | * task was created by the #GNUNET_SCHEDULER_add_select function. | ||
153 | */ | ||
154 | int own_handles; | ||
157 | 155 | ||
158 | /** | 156 | /** |
159 | * Absolute timeout value for the task, or | 157 | * Absolute timeout value for the task, or |
@@ -169,11 +167,6 @@ struct GNUNET_SCHEDULER_Task | |||
169 | #endif | 167 | #endif |
170 | 168 | ||
171 | /** | 169 | /** |
172 | * Size of the @e fds array. | ||
173 | */ | ||
174 | unsigned int fds_len; | ||
175 | |||
176 | /** | ||
177 | * Why is the task ready? Set after task is added to ready queue. | 170 | * Why is the task ready? Set after task is added to ready queue. |
178 | * Initially set to zero. All reasons that have already been | 171 | * Initially set to zero. All reasons that have already been |
179 | * satisfied (i.e. read or write ready) will be set over time. | 172 | * satisfied (i.e. read or write ready) will be set over time. |
@@ -224,11 +217,72 @@ struct GNUNET_SCHEDULER_Task | |||
224 | int num_backtrace_strings; | 217 | int num_backtrace_strings; |
225 | #endif | 218 | #endif |
226 | 219 | ||
220 | }; | ||
221 | |||
222 | |||
223 | /** | ||
224 | * A struct representing an event the select driver is waiting for | ||
225 | */ | ||
226 | struct Scheduled | ||
227 | { | ||
228 | struct Scheduled *prev; | ||
229 | |||
230 | struct Scheduled *next; | ||
231 | |||
232 | /** | ||
233 | * the task, the event is related to | ||
234 | */ | ||
235 | struct GNUNET_SCHEDULER_Task *task; | ||
236 | |||
237 | /** | ||
238 | * information about the network socket / file descriptor where | ||
239 | * the event is expected to occur | ||
240 | */ | ||
241 | struct GNUNET_SCHEDULER_FdInfo *fdi; | ||
242 | |||
243 | /** | ||
244 | * the event types (multiple event types can be ORed) the select | ||
245 | * driver is expected to wait for | ||
246 | */ | ||
247 | enum GNUNET_SCHEDULER_EventType et; | ||
248 | }; | ||
249 | |||
250 | |||
251 | /** | ||
252 | * Driver context used by GNUNET_SCHEDULER_run | ||
253 | */ | ||
254 | struct DriverContext | ||
255 | { | ||
256 | /** | ||
257 | * the head of a DLL containing information about the events the | ||
258 | * select driver is waiting for | ||
259 | */ | ||
260 | struct Scheduled *scheduled_head; | ||
227 | 261 | ||
262 | /** | ||
263 | * the tail of a DLL containing information about the events the | ||
264 | * select driver is waiting for | ||
265 | */ | ||
266 | struct Scheduled *scheduled_tail; | ||
267 | |||
268 | /** | ||
269 | * the time until the select driver will wake up again (after | ||
270 | * calling select) | ||
271 | */ | ||
272 | struct GNUNET_TIME_Relative timeout; | ||
228 | }; | 273 | }; |
229 | 274 | ||
230 | 275 | ||
231 | /** | 276 | /** |
277 | * The driver used for the event loop. Will be handed over to | ||
278 | * the scheduler in #GNUNET_SCHEDULER_run_from_driver(), peristed | ||
279 | * there in this variable for later use in functions like | ||
280 | * #GNUNET_SCHEDULER_add_select(), #add_without_sets() and | ||
281 | * #GNUNET_SCHEDULER_cancel(). | ||
282 | */ | ||
283 | static const struct GNUNET_SCHEDULER_Driver *scheduler_driver; | ||
284 | |||
285 | /** | ||
232 | * Head of list of tasks waiting for an event. | 286 | * Head of list of tasks waiting for an event. |
233 | */ | 287 | */ |
234 | static struct GNUNET_SCHEDULER_Task *pending_head; | 288 | static struct GNUNET_SCHEDULER_Task *pending_head; |
@@ -330,6 +384,11 @@ static struct GNUNET_SCHEDULER_TaskContext tc; | |||
330 | */ | 384 | */ |
331 | static void *scheduler_select_cls; | 385 | static void *scheduler_select_cls; |
332 | 386 | ||
387 | /** | ||
388 | * Scheduler handle used for the driver functions | ||
389 | */ | ||
390 | static struct GNUNET_SCHEDULER_Handle sh; | ||
391 | |||
333 | 392 | ||
334 | /** | 393 | /** |
335 | * Sets the select function to use in the scheduler (scheduler_select). | 394 | * Sets the select function to use in the scheduler (scheduler_select). |
@@ -364,115 +423,44 @@ check_priority (enum GNUNET_SCHEDULER_Priority p) | |||
364 | 423 | ||
365 | 424 | ||
366 | /** | 425 | /** |
367 | * Update all sets and timeout for select. | 426 | * chooses the nearest timeout from all pending tasks, to be used |
368 | * | 427 | * to tell the driver the next wakeup time (using its set_wakeup |
369 | * @param rs read-set, set to all FDs we would like to read (updated) | 428 | * callback) |
370 | * @param ws write-set, set to all FDs we would like to write (updated) | ||
371 | * @param timeout next timeout (updated) | ||
372 | */ | 429 | */ |
373 | static void | 430 | struct GNUNET_TIME_Absolute |
374 | update_sets (struct GNUNET_NETWORK_FDSet *rs, | 431 | get_timeout () |
375 | struct GNUNET_NETWORK_FDSet *ws, | ||
376 | struct GNUNET_TIME_Relative *timeout) | ||
377 | { | 432 | { |
378 | struct GNUNET_SCHEDULER_Task *pos; | 433 | struct GNUNET_SCHEDULER_Task *pos; |
379 | struct GNUNET_TIME_Absolute now; | 434 | struct GNUNET_TIME_Absolute now; |
380 | struct GNUNET_TIME_Relative to; | 435 | struct GNUNET_TIME_Absolute timeout; |
381 | 436 | ||
382 | now = GNUNET_TIME_absolute_get (); | ||
383 | pos = pending_timeout_head; | 437 | pos = pending_timeout_head; |
438 | now = GNUNET_TIME_absolute_get (); | ||
439 | timeout = GNUNET_TIME_UNIT_FOREVER_ABS; | ||
384 | if (NULL != pos) | 440 | if (NULL != pos) |
385 | { | 441 | { |
386 | to = GNUNET_TIME_absolute_get_difference (now, pos->timeout); | ||
387 | if (timeout->rel_value_us > to.rel_value_us) | ||
388 | *timeout = to; | ||
389 | if (0 != pos->reason) | 442 | if (0 != pos->reason) |
390 | *timeout = GNUNET_TIME_UNIT_ZERO; | 443 | { |
444 | timeout = now; | ||
445 | } | ||
446 | else | ||
447 | { | ||
448 | timeout = pos->timeout; | ||
449 | } | ||
391 | } | 450 | } |
392 | for (pos = pending_head; NULL != pos; pos = pos->next) | 451 | for (pos = pending_head; NULL != pos; pos = pos->next) |
393 | { | 452 | { |
394 | if (pos->timeout.abs_value_us != GNUNET_TIME_UNIT_FOREVER_ABS.abs_value_us) | 453 | if (0 != pos->reason) |
395 | { | 454 | { |
396 | to = GNUNET_TIME_absolute_get_difference (now, pos->timeout); | 455 | timeout = now; |
397 | if (timeout->rel_value_us > to.rel_value_us) | 456 | } |
398 | *timeout = to; | 457 | else if ((pos->timeout.abs_value_us != GNUNET_TIME_UNIT_FOREVER_ABS.abs_value_us) && |
458 | (timeout.abs_value_us > pos->timeout.abs_value_us)) | ||
459 | { | ||
460 | timeout = pos->timeout; | ||
399 | } | 461 | } |
400 | if (-1 != pos->read_fd) | ||
401 | GNUNET_NETWORK_fdset_set_native (rs, pos->read_fd); | ||
402 | if (-1 != pos->write_fd) | ||
403 | GNUNET_NETWORK_fdset_set_native (ws, pos->write_fd); | ||
404 | if (NULL != pos->read_set) | ||
405 | GNUNET_NETWORK_fdset_add (rs, pos->read_set); | ||
406 | if (NULL != pos->write_set) | ||
407 | GNUNET_NETWORK_fdset_add (ws, pos->write_set); | ||
408 | if (0 != pos->reason) | ||
409 | *timeout = GNUNET_TIME_UNIT_ZERO; | ||
410 | } | ||
411 | } | ||
412 | |||
413 | |||
414 | /** | ||
415 | * Check if the ready set overlaps with the set we want to have ready. | ||
416 | * If so, update the want set (set all FDs that are ready). If not, | ||
417 | * return #GNUNET_NO. | ||
418 | * | ||
419 | * @param ready set that is ready | ||
420 | * @param want set that we want to be ready | ||
421 | * @return #GNUNET_YES if there was some overlap | ||
422 | */ | ||
423 | static int | ||
424 | set_overlaps (const struct GNUNET_NETWORK_FDSet *ready, | ||
425 | struct GNUNET_NETWORK_FDSet *want) | ||
426 | { | ||
427 | if ((NULL == want) || (NULL == ready)) | ||
428 | return GNUNET_NO; | ||
429 | if (GNUNET_NETWORK_fdset_overlap (ready, want)) | ||
430 | { | ||
431 | /* copy all over (yes, there maybe unrelated bits, | ||
432 | * but this should not hurt well-written clients) */ | ||
433 | GNUNET_NETWORK_fdset_copy (want, ready); | ||
434 | return GNUNET_YES; | ||
435 | } | 462 | } |
436 | return GNUNET_NO; | 463 | return timeout; |
437 | } | ||
438 | |||
439 | |||
440 | /** | ||
441 | * Check if the given task is eligible to run now. | ||
442 | * Also set the reason why it is eligible. | ||
443 | * | ||
444 | * @param task task to check if it is ready | ||
445 | * @param now the current time | ||
446 | * @param rs set of FDs ready for reading | ||
447 | * @param ws set of FDs ready for writing | ||
448 | * @return #GNUNET_YES if we can run it, #GNUNET_NO if not. | ||
449 | */ | ||
450 | static int | ||
451 | is_ready (struct GNUNET_SCHEDULER_Task *task, | ||
452 | struct GNUNET_TIME_Absolute now, | ||
453 | const struct GNUNET_NETWORK_FDSet *rs, | ||
454 | const struct GNUNET_NETWORK_FDSet *ws) | ||
455 | { | ||
456 | enum GNUNET_SCHEDULER_Reason reason; | ||
457 | |||
458 | reason = task->reason; | ||
459 | if (now.abs_value_us >= task->timeout.abs_value_us) | ||
460 | reason |= GNUNET_SCHEDULER_REASON_TIMEOUT; | ||
461 | if ((0 == (reason & GNUNET_SCHEDULER_REASON_READ_READY)) && | ||
462 | (((task->read_fd != -1) && | ||
463 | (GNUNET_YES == GNUNET_NETWORK_fdset_test_native (rs, task->read_fd))) || | ||
464 | (set_overlaps (rs, task->read_set)))) | ||
465 | reason |= GNUNET_SCHEDULER_REASON_READ_READY; | ||
466 | if ((0 == (reason & GNUNET_SCHEDULER_REASON_WRITE_READY)) && | ||
467 | (((task->write_fd != -1) && | ||
468 | (GNUNET_YES == GNUNET_NETWORK_fdset_test_native (ws, task->write_fd))) | ||
469 | || (set_overlaps (ws, task->write_set)))) | ||
470 | reason |= GNUNET_SCHEDULER_REASON_WRITE_READY; | ||
471 | if (0 == reason) | ||
472 | return GNUNET_NO; /* not ready */ | ||
473 | reason |= GNUNET_SCHEDULER_REASON_PREREQ_DONE; | ||
474 | task->reason = reason; | ||
475 | return GNUNET_YES; | ||
476 | } | 464 | } |
477 | 465 | ||
478 | 466 | ||
@@ -495,51 +483,6 @@ queue_ready_task (struct GNUNET_SCHEDULER_Task *task) | |||
495 | 483 | ||
496 | 484 | ||
497 | /** | 485 | /** |
498 | * Check which tasks are ready and move them | ||
499 | * to the respective ready queue. | ||
500 | * | ||
501 | * @param rs FDs ready for reading | ||
502 | * @param ws FDs ready for writing | ||
503 | */ | ||
504 | static void | ||
505 | check_ready (const struct GNUNET_NETWORK_FDSet *rs, | ||
506 | const struct GNUNET_NETWORK_FDSet *ws) | ||
507 | { | ||
508 | struct GNUNET_SCHEDULER_Task *pos; | ||
509 | struct GNUNET_SCHEDULER_Task *next; | ||
510 | struct GNUNET_TIME_Absolute now; | ||
511 | |||
512 | now = GNUNET_TIME_absolute_get (); | ||
513 | while (NULL != (pos = pending_timeout_head)) | ||
514 | { | ||
515 | if (now.abs_value_us >= pos->timeout.abs_value_us) | ||
516 | pos->reason |= GNUNET_SCHEDULER_REASON_TIMEOUT; | ||
517 | if (0 == pos->reason) | ||
518 | break; | ||
519 | GNUNET_CONTAINER_DLL_remove (pending_timeout_head, | ||
520 | pending_timeout_tail, | ||
521 | pos); | ||
522 | if (pending_timeout_last == pos) | ||
523 | pending_timeout_last = NULL; | ||
524 | queue_ready_task (pos); | ||
525 | } | ||
526 | pos = pending_head; | ||
527 | while (NULL != pos) | ||
528 | { | ||
529 | next = pos->next; | ||
530 | if (GNUNET_YES == is_ready (pos, now, rs, ws)) | ||
531 | { | ||
532 | GNUNET_CONTAINER_DLL_remove (pending_head, | ||
533 | pending_tail, | ||
534 | pos); | ||
535 | queue_ready_task (pos); | ||
536 | } | ||
537 | pos = next; | ||
538 | } | ||
539 | } | ||
540 | |||
541 | |||
542 | /** | ||
543 | * Request the shutdown of a scheduler. Marks all tasks | 486 | * Request the shutdown of a scheduler. Marks all tasks |
544 | * awaiting shutdown as ready. Note that tasks | 487 | * awaiting shutdown as ready. Note that tasks |
545 | * scheduled with #GNUNET_SCHEDULER_add_shutdown() AFTER this call | 488 | * scheduled with #GNUNET_SCHEDULER_add_shutdown() AFTER this call |
@@ -562,25 +505,6 @@ GNUNET_SCHEDULER_shutdown () | |||
562 | 505 | ||
563 | 506 | ||
564 | /** | 507 | /** |
565 | * Destroy a task (release associated resources) | ||
566 | * | ||
567 | * @param t task to destroy | ||
568 | */ | ||
569 | static void | ||
570 | destroy_task (struct GNUNET_SCHEDULER_Task *t) | ||
571 | { | ||
572 | if (NULL != t->read_set) | ||
573 | GNUNET_NETWORK_fdset_destroy (t->read_set); | ||
574 | if (NULL != t->write_set) | ||
575 | GNUNET_NETWORK_fdset_destroy (t->write_set); | ||
576 | #if EXECINFO | ||
577 | GNUNET_free (t->backtrace_strings); | ||
578 | #endif | ||
579 | GNUNET_free (t); | ||
580 | } | ||
581 | |||
582 | |||
583 | /** | ||
584 | * Output stack trace of task @a t. | 508 | * Output stack trace of task @a t. |
585 | * | 509 | * |
586 | * @param t task to dump stack trace of | 510 | * @param t task to dump stack trace of |
@@ -592,88 +516,59 @@ dump_backtrace (struct GNUNET_SCHEDULER_Task *t) | |||
592 | unsigned int i; | 516 | unsigned int i; |
593 | 517 | ||
594 | for (i = 0; i < t->num_backtrace_strings; i++) | 518 | for (i = 0; i < t->num_backtrace_strings; i++) |
595 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 519 | LOG (GNUNET_ERROR_TYPE_WARNING, |
596 | "Task %p trace %u: %s\n", | 520 | "Task %p trace %u: %s\n", |
597 | t, | 521 | t, |
598 | i, | 522 | i, |
599 | t->backtrace_strings[i]); | 523 | t->backtrace_strings[i]); |
600 | #endif | 524 | #endif |
601 | } | 525 | } |
602 | 526 | ||
603 | 527 | ||
604 | /** | 528 | /** |
605 | * Run at least one task in the highest-priority queue that is not | 529 | * Destroy a task (release associated resources) |
606 | * empty. Keep running tasks until we are either no longer running | ||
607 | * "URGENT" tasks or until we have at least one "pending" task (which | ||
608 | * may become ready, hence we should select on it). Naturally, if | ||
609 | * there are no more ready tasks, we also return. | ||
610 | * | 530 | * |
611 | * @param rs FDs ready for reading | 531 | * @param t task to destroy |
612 | * @param ws FDs ready for writing | ||
613 | */ | 532 | */ |
614 | static void | 533 | static void |
615 | run_ready (struct GNUNET_NETWORK_FDSet *rs, | 534 | destroy_task (struct GNUNET_SCHEDULER_Task *t) |
616 | struct GNUNET_NETWORK_FDSet *ws) | ||
617 | { | 535 | { |
618 | enum GNUNET_SCHEDULER_Priority p; | 536 | unsigned int i; |
619 | struct GNUNET_SCHEDULER_Task *pos; | ||
620 | 537 | ||
621 | max_priority_added = GNUNET_SCHEDULER_PRIORITY_KEEP; | 538 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
622 | do | 539 | "destroying task %p\n", |
540 | t); | ||
541 | |||
542 | if (GNUNET_YES == t->own_handles) | ||
623 | { | 543 | { |
624 | if (0 == ready_count) | 544 | for (i = 0; i != t->fds_len; ++i) |
625 | return; | ||
626 | GNUNET_assert (NULL == ready_head[GNUNET_SCHEDULER_PRIORITY_KEEP]); | ||
627 | /* yes, p>0 is correct, 0 is "KEEP" which should | ||
628 | * always be an empty queue (see assertion)! */ | ||
629 | for (p = GNUNET_SCHEDULER_PRIORITY_COUNT - 1; p > 0; p--) | ||
630 | { | ||
631 | pos = ready_head[p]; | ||
632 | if (NULL != pos) | ||
633 | break; | ||
634 | } | ||
635 | GNUNET_assert (NULL != pos); /* ready_count wrong? */ | ||
636 | GNUNET_CONTAINER_DLL_remove (ready_head[p], | ||
637 | ready_tail[p], | ||
638 | pos); | ||
639 | ready_count--; | ||
640 | current_priority = pos->priority; | ||
641 | current_lifeness = pos->lifeness; | ||
642 | active_task = pos; | ||
643 | #if PROFILE_DELAYS | ||
644 | if (GNUNET_TIME_absolute_get_duration (pos->start_time).rel_value_us > | ||
645 | DELAY_THRESHOLD.rel_value_us) | ||
646 | { | 545 | { |
647 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 546 | const struct GNUNET_NETWORK_Handle *fd = t->fds[i].fd; |
648 | "Task %p took %s to be scheduled\n", | 547 | const struct GNUNET_DISK_FileHandle *fh = t->fds[i].fh; |
649 | pos, | 548 | if (fd) |
650 | GNUNET_STRINGS_relative_time_to_string (GNUNET_TIME_absolute_get_duration (pos->start_time), | 549 | { |
651 | GNUNET_YES)); | 550 | GNUNET_NETWORK_socket_free_memory_only_ ((struct GNUNET_NETWORK_Handle *) fd); |
551 | } | ||
552 | if (fh) | ||
553 | { | ||
554 | // FIXME: on WIN32 this is not enough! A function | ||
555 | // GNUNET_DISK_file_free_memory_only would be nice | ||
556 | GNUNET_free ((void *) fh); | ||
557 | } | ||
652 | } | 558 | } |
653 | #endif | ||
654 | tc.reason = pos->reason; | ||
655 | tc.read_ready = (NULL == pos->read_set) ? rs : pos->read_set; | ||
656 | if ((-1 != pos->read_fd) && | ||
657 | (0 != (pos->reason & GNUNET_SCHEDULER_REASON_READ_READY))) | ||
658 | GNUNET_NETWORK_fdset_set_native (rs, pos->read_fd); | ||
659 | tc.write_ready = (NULL == pos->write_set) ? ws : pos->write_set; | ||
660 | if ((-1 != pos->write_fd) && | ||
661 | (0 != (pos->reason & GNUNET_SCHEDULER_REASON_WRITE_READY))) | ||
662 | GNUNET_NETWORK_fdset_set_native (ws, pos->write_fd); | ||
663 | if ((0 != (tc.reason & GNUNET_SCHEDULER_REASON_WRITE_READY)) && | ||
664 | (-1 != pos->write_fd) && | ||
665 | (!GNUNET_NETWORK_fdset_test_native (ws, pos->write_fd))) | ||
666 | GNUNET_assert (0); // added to ready in previous select loop! | ||
667 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
668 | "Running task: %p\n", | ||
669 | pos); | ||
670 | pos->callback (pos->callback_cls); | ||
671 | dump_backtrace (pos); | ||
672 | active_task = NULL; | ||
673 | destroy_task (pos); | ||
674 | tasks_run++; | ||
675 | } | 559 | } |
676 | while ((NULL == pending_head) || (p >= max_priority_added)); | 560 | if (t->fds_len > 1) |
561 | { | ||
562 | GNUNET_array_grow (t->fds, t->fds_len, 0); | ||
563 | } | ||
564 | if (t->ready_fds_len > 0) | ||
565 | { | ||
566 | GNUNET_array_grow (t->ready_fds, t->ready_fds_len, 0); | ||
567 | } | ||
568 | #if EXECINFO | ||
569 | GNUNET_free (t->backtrace_strings); | ||
570 | #endif | ||
571 | GNUNET_free (t); | ||
677 | } | 572 | } |
678 | 573 | ||
679 | 574 | ||
@@ -700,22 +595,22 @@ sighandler_pipe () | |||
700 | #endif | 595 | #endif |
701 | 596 | ||
702 | 597 | ||
703 | /** | 598 | ///** |
704 | * Wait for a short time. | 599 | // * Wait for a short time. |
705 | * Sleeps for @a ms ms (as that should be long enough for virtually all | 600 | // * Sleeps for @a ms ms (as that should be long enough for virtually all |
706 | * modern systems to context switch and allow another process to do | 601 | // * modern systems to context switch and allow another process to do |
707 | * some 'real' work). | 602 | // * some 'real' work). |
708 | * | 603 | // * |
709 | * @param ms how many ms to wait | 604 | // * @param ms how many ms to wait |
710 | */ | 605 | // */ |
711 | static void | 606 | //static void |
712 | short_wait (unsigned int ms) | 607 | //short_wait (unsigned int ms) |
713 | { | 608 | //{ |
714 | struct GNUNET_TIME_Relative timeout; | 609 | // struct GNUNET_TIME_Relative timeout; |
715 | 610 | // | |
716 | timeout = GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MILLISECONDS, ms); | 611 | // timeout = GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MILLISECONDS, ms); |
717 | (void) GNUNET_NETWORK_socket_select (NULL, NULL, NULL, timeout); | 612 | // (void) GNUNET_NETWORK_socket_select (NULL, NULL, NULL, timeout); |
718 | } | 613 | //} |
719 | 614 | ||
720 | 615 | ||
721 | /** | 616 | /** |
@@ -737,35 +632,31 @@ sighandler_shutdown () | |||
737 | } | 632 | } |
738 | 633 | ||
739 | 634 | ||
740 | /** | 635 | void |
741 | * Check if the system is still alive. Trigger shutdown if we | 636 | shutdown_if_no_lifeness () |
742 | * have tasks, but none of them give us lifeness. | ||
743 | * | ||
744 | * @return #GNUNET_OK to continue the main loop, | ||
745 | * #GNUNET_NO to exit | ||
746 | */ | ||
747 | static int | ||
748 | check_lifeness () | ||
749 | { | 637 | { |
750 | struct GNUNET_SCHEDULER_Task *t; | 638 | struct GNUNET_SCHEDULER_Task *t; |
751 | 639 | ||
752 | if (ready_count > 0) | 640 | if (ready_count > 0) |
753 | return GNUNET_OK; | 641 | return; |
754 | for (t = pending_head; NULL != t; t = t->next) | 642 | for (t = pending_head; NULL != t; t = t->next) |
755 | if (t->lifeness == GNUNET_YES) | 643 | if (GNUNET_YES == t->lifeness) |
756 | return GNUNET_OK; | 644 | return; |
757 | for (t = shutdown_head; NULL != t; t = t->next) | 645 | for (t = shutdown_head; NULL != t; t = t->next) |
758 | if (t->lifeness == GNUNET_YES) | 646 | if (GNUNET_YES == t->lifeness) |
759 | return GNUNET_OK; | 647 | return; |
760 | for (t = pending_timeout_head; NULL != t; t = t->next) | 648 | for (t = pending_timeout_head; NULL != t; t = t->next) |
761 | if (t->lifeness == GNUNET_YES) | 649 | if (GNUNET_YES == t->lifeness) |
762 | return GNUNET_OK; | 650 | return; |
763 | if (NULL != shutdown_head) | 651 | /* No lifeness! Cancel all pending tasks the driver knows about and shutdown */ |
652 | t = pending_head; | ||
653 | while (NULL != t) | ||
764 | { | 654 | { |
765 | GNUNET_SCHEDULER_shutdown (); | 655 | struct GNUNET_SCHEDULER_Task *next = t->next; |
766 | return GNUNET_OK; | 656 | GNUNET_SCHEDULER_cancel (t); |
657 | t = next; | ||
767 | } | 658 | } |
768 | return GNUNET_NO; | 659 | GNUNET_SCHEDULER_shutdown (); |
769 | } | 660 | } |
770 | 661 | ||
771 | 662 | ||
@@ -787,204 +678,17 @@ void | |||
787 | GNUNET_SCHEDULER_run (GNUNET_SCHEDULER_TaskCallback task, | 678 | GNUNET_SCHEDULER_run (GNUNET_SCHEDULER_TaskCallback task, |
788 | void *task_cls) | 679 | void *task_cls) |
789 | { | 680 | { |
790 | GNUNET_SCHEDULER_run_with_optional_signals(GNUNET_YES, task, task_cls); | 681 | struct GNUNET_SCHEDULER_Driver *driver; |
791 | } | 682 | struct DriverContext context = {.scheduled_head = NULL, |
792 | 683 | .scheduled_tail = NULL, | |
793 | void | 684 | .timeout = GNUNET_TIME_UNIT_FOREVER_REL}; |
794 | GNUNET_SCHEDULER_run_with_optional_signals (int install_signals, | 685 | |
795 | GNUNET_SCHEDULER_TaskCallback task, | 686 | driver = GNUNET_SCHEDULER_driver_select (); |
796 | void *task_cls) | 687 | driver->cls = &context; |
797 | { | 688 | |
798 | struct GNUNET_NETWORK_FDSet *rs; | 689 | GNUNET_SCHEDULER_run_with_driver (driver, task, task_cls); |
799 | struct GNUNET_NETWORK_FDSet *ws; | 690 | |
800 | struct GNUNET_TIME_Relative timeout; | 691 | GNUNET_free (driver); |
801 | int ret; | ||
802 | struct GNUNET_SIGNAL_Context *shc_int; | ||
803 | struct GNUNET_SIGNAL_Context *shc_term; | ||
804 | #if (SIGTERM != GNUNET_TERM_SIG) | ||
805 | struct GNUNET_SIGNAL_Context *shc_gterm; | ||
806 | #endif | ||
807 | |||
808 | #ifndef MINGW | ||
809 | struct GNUNET_SIGNAL_Context *shc_quit; | ||
810 | struct GNUNET_SIGNAL_Context *shc_hup; | ||
811 | struct GNUNET_SIGNAL_Context *shc_pipe; | ||
812 | #endif | ||
813 | unsigned long long last_tr; | ||
814 | unsigned int busy_wait_warning; | ||
815 | const struct GNUNET_DISK_FileHandle *pr; | ||
816 | char c; | ||
817 | |||
818 | GNUNET_assert (NULL == active_task); | ||
819 | rs = GNUNET_NETWORK_fdset_create (); | ||
820 | ws = GNUNET_NETWORK_fdset_create (); | ||
821 | GNUNET_assert (NULL == shutdown_pipe_handle); | ||
822 | shutdown_pipe_handle = GNUNET_DISK_pipe (GNUNET_NO, | ||
823 | GNUNET_NO, | ||
824 | GNUNET_NO, | ||
825 | GNUNET_NO); | ||
826 | GNUNET_assert (NULL != shutdown_pipe_handle); | ||
827 | pr = GNUNET_DISK_pipe_handle (shutdown_pipe_handle, | ||
828 | GNUNET_DISK_PIPE_END_READ); | ||
829 | GNUNET_assert (NULL != pr); | ||
830 | my_pid = getpid (); | ||
831 | |||
832 | if (GNUNET_YES == install_signals) | ||
833 | { | ||
834 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
835 | "Registering signal handlers\n"); | ||
836 | shc_int = GNUNET_SIGNAL_handler_install (SIGINT, | ||
837 | &sighandler_shutdown); | ||
838 | shc_term = GNUNET_SIGNAL_handler_install (SIGTERM, | ||
839 | &sighandler_shutdown); | ||
840 | #if (SIGTERM != GNUNET_TERM_SIG) | ||
841 | shc_gterm = GNUNET_SIGNAL_handler_install (GNUNET_TERM_SIG, | ||
842 | &sighandler_shutdown); | ||
843 | #endif | ||
844 | #ifndef MINGW | ||
845 | shc_pipe = GNUNET_SIGNAL_handler_install (SIGPIPE, | ||
846 | &sighandler_pipe); | ||
847 | shc_quit = GNUNET_SIGNAL_handler_install (SIGQUIT, | ||
848 | &sighandler_shutdown); | ||
849 | shc_hup = GNUNET_SIGNAL_handler_install (SIGHUP, | ||
850 | &sighandler_shutdown); | ||
851 | #endif | ||
852 | } | ||
853 | |||
854 | current_priority = GNUNET_SCHEDULER_PRIORITY_DEFAULT; | ||
855 | current_lifeness = GNUNET_YES; | ||
856 | GNUNET_SCHEDULER_add_with_reason_and_priority (task, | ||
857 | task_cls, | ||
858 | GNUNET_SCHEDULER_REASON_STARTUP, | ||
859 | GNUNET_SCHEDULER_PRIORITY_DEFAULT); | ||
860 | active_task = (void *) (long) -1; /* force passing of sanity check */ | ||
861 | GNUNET_SCHEDULER_add_now_with_lifeness (GNUNET_NO, | ||
862 | &GNUNET_OS_install_parent_control_handler, | ||
863 | NULL); | ||
864 | active_task = NULL; | ||
865 | last_tr = 0; | ||
866 | busy_wait_warning = 0; | ||
867 | while (GNUNET_OK == check_lifeness ()) | ||
868 | { | ||
869 | GNUNET_NETWORK_fdset_zero (rs); | ||
870 | GNUNET_NETWORK_fdset_zero (ws); | ||
871 | timeout = GNUNET_TIME_UNIT_FOREVER_REL; | ||
872 | update_sets (rs, ws, &timeout); | ||
873 | GNUNET_NETWORK_fdset_handle_set (rs, pr); | ||
874 | if (ready_count > 0) | ||
875 | { | ||
876 | /* no blocking, more work already ready! */ | ||
877 | timeout = GNUNET_TIME_UNIT_ZERO; | ||
878 | } | ||
879 | if (NULL == scheduler_select) | ||
880 | ret = GNUNET_NETWORK_socket_select (rs, | ||
881 | ws, | ||
882 | NULL, | ||
883 | timeout); | ||
884 | else | ||
885 | ret = scheduler_select (scheduler_select_cls, | ||
886 | rs, | ||
887 | ws, | ||
888 | NULL, | ||
889 | timeout); | ||
890 | if (ret == GNUNET_SYSERR) | ||
891 | { | ||
892 | if (errno == EINTR) | ||
893 | continue; | ||
894 | |||
895 | LOG_STRERROR (GNUNET_ERROR_TYPE_ERROR, "select"); | ||
896 | #ifndef MINGW | ||
897 | #if USE_LSOF | ||
898 | char lsof[512]; | ||
899 | |||
900 | snprintf (lsof, sizeof (lsof), "lsof -p %d", getpid ()); | ||
901 | (void) close (1); | ||
902 | (void) dup2 (2, 1); | ||
903 | if (0 != system (lsof)) | ||
904 | LOG_STRERROR (GNUNET_ERROR_TYPE_WARNING, | ||
905 | "system"); | ||
906 | #endif | ||
907 | #endif | ||
908 | #if DEBUG_FDS | ||
909 | struct GNUNET_SCHEDULER_Task *t; | ||
910 | |||
911 | for (t = pending_head; NULL != t; t = t->next) | ||
912 | { | ||
913 | if (-1 != t->read_fd) | ||
914 | { | ||
915 | int flags = fcntl (t->read_fd, F_GETFD); | ||
916 | if ((flags == -1) && (errno == EBADF)) | ||
917 | { | ||
918 | LOG (GNUNET_ERROR_TYPE_ERROR, | ||
919 | "Got invalid file descriptor %d!\n", | ||
920 | t->read_fd); | ||
921 | dump_backtrace (t); | ||
922 | } | ||
923 | } | ||
924 | if (-1 != t->write_fd) | ||
925 | { | ||
926 | int flags = fcntl (t->write_fd, F_GETFD); | ||
927 | if ((flags == -1) && (errno == EBADF)) | ||
928 | { | ||
929 | LOG (GNUNET_ERROR_TYPE_ERROR, | ||
930 | "Got invalid file descriptor %d!\n", | ||
931 | t->write_fd); | ||
932 | dump_backtrace (t); | ||
933 | } | ||
934 | } | ||
935 | } | ||
936 | #endif | ||
937 | GNUNET_assert (0); | ||
938 | break; | ||
939 | } | ||
940 | |||
941 | if ( (0 == ret) && | ||
942 | (0 == timeout.rel_value_us) && | ||
943 | (busy_wait_warning > 16) ) | ||
944 | { | ||
945 | LOG (GNUNET_ERROR_TYPE_WARNING, | ||
946 | "Looks like we're busy waiting...\n"); | ||
947 | short_wait (100); /* mitigate */ | ||
948 | } | ||
949 | check_ready (rs, ws); | ||
950 | run_ready (rs, ws); | ||
951 | if (GNUNET_NETWORK_fdset_handle_isset (rs, pr)) | ||
952 | { | ||
953 | /* consume the signal */ | ||
954 | GNUNET_DISK_file_read (pr, &c, sizeof (c)); | ||
955 | /* mark all active tasks as ready due to shutdown */ | ||
956 | GNUNET_SCHEDULER_shutdown (); | ||
957 | } | ||
958 | if (last_tr == tasks_run) | ||
959 | { | ||
960 | short_wait (1); | ||
961 | busy_wait_warning++; | ||
962 | } | ||
963 | else | ||
964 | { | ||
965 | last_tr = tasks_run; | ||
966 | busy_wait_warning = 0; | ||
967 | } | ||
968 | } | ||
969 | |||
970 | if (GNUNET_YES == install_signals) | ||
971 | { | ||
972 | GNUNET_SIGNAL_handler_uninstall (shc_int); | ||
973 | GNUNET_SIGNAL_handler_uninstall (shc_term); | ||
974 | #if (SIGTERM != GNUNET_TERM_SIG) | ||
975 | GNUNET_SIGNAL_handler_uninstall (shc_gterm); | ||
976 | #endif | ||
977 | #ifndef MINGW | ||
978 | GNUNET_SIGNAL_handler_uninstall (shc_pipe); | ||
979 | GNUNET_SIGNAL_handler_uninstall (shc_quit); | ||
980 | GNUNET_SIGNAL_handler_uninstall (shc_hup); | ||
981 | #endif | ||
982 | } | ||
983 | |||
984 | GNUNET_DISK_pipe_close (shutdown_pipe_handle); | ||
985 | shutdown_pipe_handle = NULL; | ||
986 | GNUNET_NETWORK_fdset_destroy (rs); | ||
987 | GNUNET_NETWORK_fdset_destroy (ws); | ||
988 | } | 692 | } |
989 | 693 | ||
990 | 694 | ||
@@ -1029,9 +733,164 @@ GNUNET_SCHEDULER_get_load (enum GNUNET_SCHEDULER_Priority p) | |||
1029 | } | 733 | } |
1030 | 734 | ||
1031 | 735 | ||
736 | void | ||
737 | init_fd_info (struct GNUNET_SCHEDULER_Task *t, | ||
738 | const struct GNUNET_NETWORK_Handle *const *read_nh, | ||
739 | unsigned int read_nh_len, | ||
740 | const struct GNUNET_NETWORK_Handle *const *write_nh, | ||
741 | unsigned int write_nh_len, | ||
742 | const struct GNUNET_DISK_FileHandle *const *read_fh, | ||
743 | unsigned int read_fh_len, | ||
744 | const struct GNUNET_DISK_FileHandle *const *write_fh, | ||
745 | unsigned int write_fh_len) | ||
746 | { | ||
747 | // FIXME: if we have exactly two network handles / exactly two file handles | ||
748 | // and they are equal, we can make one FdInfo with both | ||
749 | // GNUNET_SCHEDULER_ET_IN and GNUNET_SCHEDULER_ET_OUT set. | ||
750 | struct GNUNET_SCHEDULER_FdInfo *fdi; | ||
751 | |||
752 | t->fds_len = read_nh_len + write_nh_len + read_fh_len + write_fh_len; | ||
753 | if (1 == t->fds_len) | ||
754 | { | ||
755 | fdi = &t->fdx; | ||
756 | t->fds = fdi; | ||
757 | if (1 == read_nh_len) | ||
758 | { | ||
759 | fdi->fd = *read_nh; | ||
760 | GNUNET_assert (NULL != fdi->fd); | ||
761 | fdi->et = GNUNET_SCHEDULER_ET_IN; | ||
762 | fdi->sock = GNUNET_NETWORK_get_fd (*read_nh); | ||
763 | t->read_fd = fdi->sock; | ||
764 | t->write_fd = -1; | ||
765 | } | ||
766 | else if (1 == write_nh_len) | ||
767 | { | ||
768 | fdi->fd = *write_nh; | ||
769 | GNUNET_assert (NULL != fdi->fd); | ||
770 | fdi->et = GNUNET_SCHEDULER_ET_OUT; | ||
771 | fdi->sock = GNUNET_NETWORK_get_fd (*write_nh); | ||
772 | t->read_fd = -1; | ||
773 | t->write_fd = fdi->sock; | ||
774 | } | ||
775 | else if (1 == read_fh_len) | ||
776 | { | ||
777 | fdi->fh = *read_fh; | ||
778 | GNUNET_assert (NULL != fdi->fh); | ||
779 | fdi->et = GNUNET_SCHEDULER_ET_IN; | ||
780 | fdi->sock = (*read_fh)->fd; // FIXME: does not work under WIN32 | ||
781 | t->read_fd = fdi->sock; | ||
782 | t->write_fd = -1; | ||
783 | } | ||
784 | else | ||
785 | { | ||
786 | fdi->fh = *write_fh; | ||
787 | GNUNET_assert (NULL != fdi->fh); | ||
788 | fdi->et = GNUNET_SCHEDULER_ET_OUT; | ||
789 | fdi->sock = (*write_fh)->fd; // FIXME: does not work under WIN32 | ||
790 | t->read_fd = -1; | ||
791 | t->write_fd = fdi->sock; | ||
792 | } | ||
793 | } | ||
794 | else | ||
795 | { | ||
796 | fdi = GNUNET_new_array (t->fds_len, struct GNUNET_SCHEDULER_FdInfo); | ||
797 | t->fds = fdi; | ||
798 | t->read_fd = -1; | ||
799 | t->write_fd = -1; | ||
800 | unsigned int i; | ||
801 | for (i = 0; i != read_nh_len; ++i) | ||
802 | { | ||
803 | fdi->fd = read_nh[i]; | ||
804 | GNUNET_assert (NULL != fdi->fd); | ||
805 | fdi->et = GNUNET_SCHEDULER_ET_IN; | ||
806 | fdi->sock = GNUNET_NETWORK_get_fd (read_nh[i]); | ||
807 | ++fdi; | ||
808 | } | ||
809 | for (i = 0; i != write_nh_len; ++i) | ||
810 | { | ||
811 | fdi->fd = write_nh[i]; | ||
812 | GNUNET_assert (NULL != fdi->fd); | ||
813 | fdi->et = GNUNET_SCHEDULER_ET_OUT; | ||
814 | fdi->sock = GNUNET_NETWORK_get_fd (write_nh[i]); | ||
815 | ++fdi; | ||
816 | } | ||
817 | for (i = 0; i != read_fh_len; ++i) | ||
818 | { | ||
819 | fdi->fh = read_fh[i]; | ||
820 | GNUNET_assert (NULL != fdi->fh); | ||
821 | fdi->et = GNUNET_SCHEDULER_ET_IN; | ||
822 | fdi->sock = (read_fh[i])->fd; // FIXME: does not work under WIN32 | ||
823 | ++fdi; | ||
824 | } | ||
825 | for (i = 0; i != write_fh_len; ++i) | ||
826 | { | ||
827 | fdi->fh = write_fh[i]; | ||
828 | GNUNET_assert (NULL != fdi->fh); | ||
829 | fdi->et = GNUNET_SCHEDULER_ET_OUT; | ||
830 | fdi->sock = (write_fh[i])->fd; // FIXME: does not work under WIN32 | ||
831 | ++fdi; | ||
832 | } | ||
833 | } | ||
834 | } | ||
835 | |||
836 | |||
837 | /** | ||
838 | * calls the given function @a func on each FdInfo related to @a t. | ||
839 | * Optionally updates the event type field in each FdInfo after calling | ||
840 | * @a func. | ||
841 | * | ||
842 | * @param t the task | ||
843 | * @param driver_func the function to call with each FdInfo contained in | ||
844 | * in @a t | ||
845 | * @param if_not_ready only call @a driver_func on FdInfos that are not | ||
846 | * ready | ||
847 | * @param et the event type to be set in each FdInfo after calling | ||
848 | * @a driver_func on it, or -1 if no updating not desired. | ||
849 | */ | ||
850 | void driver_add_multiple (struct GNUNET_SCHEDULER_Task *t, | ||
851 | enum GNUNET_SCHEDULER_EventType et) | ||
852 | { | ||
853 | struct GNUNET_SCHEDULER_FdInfo *fdi; | ||
854 | int success = GNUNET_YES; | ||
855 | |||
856 | for (int i = 0; i != t->fds_len; ++i) | ||
857 | { | ||
858 | fdi = &t->fds[i]; | ||
859 | success = scheduler_driver->add (scheduler_driver->cls, t, fdi) && success; | ||
860 | if (et != -1) | ||
861 | { | ||
862 | fdi->et = et; | ||
863 | } | ||
864 | } | ||
865 | if (GNUNET_YES != success) | ||
866 | { | ||
867 | LOG (GNUNET_ERROR_TYPE_ERROR, | ||
868 | "driver could not add task\n"); | ||
869 | } | ||
870 | } | ||
871 | |||
872 | |||
873 | void | ||
874 | shutdown_cb (void *cls) | ||
875 | { | ||
876 | char c; | ||
877 | const struct GNUNET_DISK_FileHandle *pr; | ||
878 | |||
879 | pr = GNUNET_DISK_pipe_handle (shutdown_pipe_handle, | ||
880 | GNUNET_DISK_PIPE_END_READ); | ||
881 | GNUNET_assert (! GNUNET_DISK_handle_invalid (pr)); | ||
882 | /* consume the signal */ | ||
883 | GNUNET_DISK_file_read (pr, &c, sizeof (c)); | ||
884 | /* mark all active tasks as ready due to shutdown */ | ||
885 | GNUNET_SCHEDULER_shutdown (); | ||
886 | } | ||
887 | |||
888 | |||
1032 | /** | 889 | /** |
1033 | * Cancel the task with the specified identifier. | 890 | * Cancel the task with the specified identifier. |
1034 | * The task must not yet have run. | 891 | * The task must not yet have run. Only allowed to be called as long as the |
892 | * scheduler is running (#GNUNET_SCHEDULER_run or | ||
893 | * #GNUNET_SCHEDULER_run_with_driver has been called and has not returned yet). | ||
1035 | * | 894 | * |
1036 | * @param task id of the task to cancel | 895 | * @param task id of the task to cancel |
1037 | * @return original closure of the task | 896 | * @return original closure of the task |
@@ -1040,34 +899,50 @@ void * | |||
1040 | GNUNET_SCHEDULER_cancel (struct GNUNET_SCHEDULER_Task *task) | 899 | GNUNET_SCHEDULER_cancel (struct GNUNET_SCHEDULER_Task *task) |
1041 | { | 900 | { |
1042 | enum GNUNET_SCHEDULER_Priority p; | 901 | enum GNUNET_SCHEDULER_Priority p; |
902 | int is_fd_task; | ||
1043 | void *ret; | 903 | void *ret; |
1044 | 904 | ||
905 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
906 | "canceling task %p\n", | ||
907 | task); | ||
908 | |||
909 | /* scheduler must be running */ | ||
910 | GNUNET_assert (NULL != scheduler_driver); | ||
1045 | GNUNET_assert ( (NULL != active_task) || | 911 | GNUNET_assert ( (NULL != active_task) || |
1046 | (GNUNET_NO == task->lifeness) ); | 912 | (GNUNET_NO == task->lifeness) ); |
1047 | if (! task->in_ready_list) | 913 | is_fd_task = (NULL != task->fds); |
914 | if (is_fd_task) | ||
1048 | { | 915 | { |
1049 | if ( (-1 == task->read_fd) && | 916 | int del_result = scheduler_driver->del (scheduler_driver->cls, task); |
1050 | (-1 == task->write_fd) && | 917 | if (GNUNET_OK != del_result) |
1051 | (NULL == task->read_set) && | ||
1052 | (NULL == task->write_set) ) | ||
1053 | { | 918 | { |
1054 | if (GNUNET_YES == task->on_shutdown) | 919 | LOG (GNUNET_ERROR_TYPE_ERROR, |
1055 | GNUNET_CONTAINER_DLL_remove (shutdown_head, | 920 | "driver could not delete task\n"); |
1056 | shutdown_tail, | 921 | GNUNET_assert (0); |
1057 | task); | ||
1058 | else | ||
1059 | GNUNET_CONTAINER_DLL_remove (pending_timeout_head, | ||
1060 | pending_timeout_tail, | ||
1061 | task); | ||
1062 | if (task == pending_timeout_last) | ||
1063 | pending_timeout_last = NULL; | ||
1064 | } | 922 | } |
1065 | else | 923 | } |
924 | if (! task->in_ready_list) | ||
925 | { | ||
926 | if (is_fd_task) | ||
1066 | { | 927 | { |
1067 | GNUNET_CONTAINER_DLL_remove (pending_head, | 928 | GNUNET_CONTAINER_DLL_remove (pending_head, |
1068 | pending_tail, | 929 | pending_tail, |
1069 | task); | 930 | task); |
1070 | } | 931 | } |
932 | else if (GNUNET_YES == task->on_shutdown) | ||
933 | { | ||
934 | GNUNET_CONTAINER_DLL_remove (shutdown_head, | ||
935 | shutdown_tail, | ||
936 | task); | ||
937 | } | ||
938 | else | ||
939 | { | ||
940 | GNUNET_CONTAINER_DLL_remove (pending_timeout_head, | ||
941 | pending_timeout_tail, | ||
942 | task); | ||
943 | if (pending_timeout_last == task) | ||
944 | pending_timeout_last = NULL; | ||
945 | } | ||
1071 | } | 946 | } |
1072 | else | 947 | else |
1073 | { | 948 | { |
@@ -1078,9 +953,6 @@ GNUNET_SCHEDULER_cancel (struct GNUNET_SCHEDULER_Task *task) | |||
1078 | ready_count--; | 953 | ready_count--; |
1079 | } | 954 | } |
1080 | ret = task->callback_cls; | 955 | ret = task->callback_cls; |
1081 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
1082 | "Canceling task %p\n", | ||
1083 | task); | ||
1084 | destroy_task (task); | 956 | destroy_task (task); |
1085 | return ret; | 957 | return ret; |
1086 | } | 958 | } |
@@ -1101,7 +973,7 @@ init_backtrace (struct GNUNET_SCHEDULER_Task *t) | |||
1101 | = backtrace (backtrace_array, MAX_TRACE_DEPTH); | 973 | = backtrace (backtrace_array, MAX_TRACE_DEPTH); |
1102 | t->backtrace_strings = | 974 | t->backtrace_strings = |
1103 | backtrace_symbols (backtrace_array, | 975 | backtrace_symbols (backtrace_array, |
1104 | t->num_backtrace_strings); | 976 | t->num_backtrace_strings); |
1105 | dump_backtrace (t); | 977 | dump_backtrace (t); |
1106 | #endif | 978 | #endif |
1107 | } | 979 | } |
@@ -1218,7 +1090,7 @@ GNUNET_SCHEDULER_add_at_with_priority (struct GNUNET_TIME_Absolute at, | |||
1218 | pending_timeout_last = t; | 1090 | pending_timeout_last = t; |
1219 | 1091 | ||
1220 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 1092 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
1221 | "Adding task: %p\n", | 1093 | "Adding task %p\n", |
1222 | t); | 1094 | t); |
1223 | init_backtrace (t); | 1095 | init_backtrace (t); |
1224 | return t; | 1096 | return t; |
@@ -1238,8 +1110,8 @@ GNUNET_SCHEDULER_add_at_with_priority (struct GNUNET_TIME_Absolute at, | |||
1238 | */ | 1110 | */ |
1239 | struct GNUNET_SCHEDULER_Task * | 1111 | struct GNUNET_SCHEDULER_Task * |
1240 | GNUNET_SCHEDULER_add_delayed_with_priority (struct GNUNET_TIME_Relative delay, | 1112 | GNUNET_SCHEDULER_add_delayed_with_priority (struct GNUNET_TIME_Relative delay, |
1241 | enum GNUNET_SCHEDULER_Priority priority, | 1113 | enum GNUNET_SCHEDULER_Priority priority, |
1242 | GNUNET_SCHEDULER_TaskCallback task, | 1114 | GNUNET_SCHEDULER_TaskCallback task, |
1243 | void *task_cls) | 1115 | void *task_cls) |
1244 | { | 1116 | { |
1245 | return GNUNET_SCHEDULER_add_at_with_priority (GNUNET_TIME_relative_to_absolute (delay), | 1117 | return GNUNET_SCHEDULER_add_at_with_priority (GNUNET_TIME_relative_to_absolute (delay), |
@@ -1307,12 +1179,12 @@ GNUNET_SCHEDULER_add_at (struct GNUNET_TIME_Absolute at, | |||
1307 | struct GNUNET_SCHEDULER_Task * | 1179 | struct GNUNET_SCHEDULER_Task * |
1308 | GNUNET_SCHEDULER_add_delayed (struct GNUNET_TIME_Relative delay, | 1180 | GNUNET_SCHEDULER_add_delayed (struct GNUNET_TIME_Relative delay, |
1309 | GNUNET_SCHEDULER_TaskCallback task, | 1181 | GNUNET_SCHEDULER_TaskCallback task, |
1310 | void *task_cls) | 1182 | void *task_cls) |
1311 | { | 1183 | { |
1312 | return GNUNET_SCHEDULER_add_delayed_with_priority (delay, | 1184 | return GNUNET_SCHEDULER_add_delayed_with_priority (delay, |
1313 | GNUNET_SCHEDULER_PRIORITY_DEFAULT, | 1185 | GNUNET_SCHEDULER_PRIORITY_DEFAULT, |
1314 | task, | 1186 | task, |
1315 | task_cls); | 1187 | task_cls); |
1316 | } | 1188 | } |
1317 | 1189 | ||
1318 | 1190 | ||
@@ -1333,11 +1205,11 @@ GNUNET_SCHEDULER_add_delayed (struct GNUNET_TIME_Relative delay, | |||
1333 | */ | 1205 | */ |
1334 | struct GNUNET_SCHEDULER_Task * | 1206 | struct GNUNET_SCHEDULER_Task * |
1335 | GNUNET_SCHEDULER_add_now (GNUNET_SCHEDULER_TaskCallback task, | 1207 | GNUNET_SCHEDULER_add_now (GNUNET_SCHEDULER_TaskCallback task, |
1336 | void *task_cls) | 1208 | void *task_cls) |
1337 | { | 1209 | { |
1338 | return GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_ZERO, | 1210 | return GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_ZERO, |
1339 | task, | 1211 | task, |
1340 | task_cls); | 1212 | task_cls); |
1341 | } | 1213 | } |
1342 | 1214 | ||
1343 | 1215 | ||
@@ -1353,7 +1225,7 @@ GNUNET_SCHEDULER_add_now (GNUNET_SCHEDULER_TaskCallback task, | |||
1353 | */ | 1225 | */ |
1354 | struct GNUNET_SCHEDULER_Task * | 1226 | struct GNUNET_SCHEDULER_Task * |
1355 | GNUNET_SCHEDULER_add_shutdown (GNUNET_SCHEDULER_TaskCallback task, | 1227 | GNUNET_SCHEDULER_add_shutdown (GNUNET_SCHEDULER_TaskCallback task, |
1356 | void *task_cls) | 1228 | void *task_cls) |
1357 | { | 1229 | { |
1358 | struct GNUNET_SCHEDULER_Task *t; | 1230 | struct GNUNET_SCHEDULER_Task *t; |
1359 | 1231 | ||
@@ -1370,12 +1242,12 @@ GNUNET_SCHEDULER_add_shutdown (GNUNET_SCHEDULER_TaskCallback task, | |||
1370 | t->timeout = GNUNET_TIME_UNIT_FOREVER_ABS; | 1242 | t->timeout = GNUNET_TIME_UNIT_FOREVER_ABS; |
1371 | t->priority = GNUNET_SCHEDULER_PRIORITY_SHUTDOWN; | 1243 | t->priority = GNUNET_SCHEDULER_PRIORITY_SHUTDOWN; |
1372 | t->on_shutdown = GNUNET_YES; | 1244 | t->on_shutdown = GNUNET_YES; |
1373 | t->lifeness = GNUNET_YES; | 1245 | t->lifeness = GNUNET_NO; |
1374 | GNUNET_CONTAINER_DLL_insert (shutdown_head, | 1246 | GNUNET_CONTAINER_DLL_insert (shutdown_head, |
1375 | shutdown_tail, | 1247 | shutdown_tail, |
1376 | t); | 1248 | t); |
1377 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 1249 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
1378 | "Adding task: %p\n", | 1250 | "Adding shutdown task %p\n", |
1379 | t); | 1251 | t); |
1380 | init_backtrace (t); | 1252 | init_backtrace (t); |
1381 | return t; | 1253 | return t; |
@@ -1409,6 +1281,33 @@ GNUNET_SCHEDULER_add_now_with_lifeness (int lifeness, | |||
1409 | } | 1281 | } |
1410 | 1282 | ||
1411 | 1283 | ||
1284 | #if DEBUG_FDS | ||
1285 | /** | ||
1286 | * check a raw file descriptor and abort if it is bad (for debugging purposes) | ||
1287 | * | ||
1288 | * @param t the task related to the file descriptor | ||
1289 | * @param raw_fd the raw file descriptor to check | ||
1290 | */ | ||
1291 | void | ||
1292 | check_fd (struct GNUNET_SCHEDULER_Task *t, int raw_fd) | ||
1293 | { | ||
1294 | if (-1 != raw_fd) | ||
1295 | { | ||
1296 | int flags = fcntl (raw_fd, F_GETFD); | ||
1297 | |||
1298 | if ((flags == -1) && (errno == EBADF)) | ||
1299 | { | ||
1300 | LOG (GNUNET_ERROR_TYPE_ERROR, | ||
1301 | "Got invalid file descriptor %d!\n", | ||
1302 | raw_fd); | ||
1303 | init_backtrace (t); | ||
1304 | GNUNET_assert (0); | ||
1305 | } | ||
1306 | } | ||
1307 | } | ||
1308 | #endif | ||
1309 | |||
1310 | |||
1412 | /** | 1311 | /** |
1413 | * Schedule a new task to be run with a specified delay or when any of | 1312 | * Schedule a new task to be run with a specified delay or when any of |
1414 | * the specified file descriptor sets is ready. The delay can be used | 1313 | * the specified file descriptor sets is ready. The delay can be used |
@@ -1437,9 +1336,11 @@ GNUNET_SCHEDULER_add_now_with_lifeness (int lifeness, | |||
1437 | #ifndef MINGW | 1336 | #ifndef MINGW |
1438 | static struct GNUNET_SCHEDULER_Task * | 1337 | static struct GNUNET_SCHEDULER_Task * |
1439 | add_without_sets (struct GNUNET_TIME_Relative delay, | 1338 | add_without_sets (struct GNUNET_TIME_Relative delay, |
1440 | enum GNUNET_SCHEDULER_Priority priority, | 1339 | enum GNUNET_SCHEDULER_Priority priority, |
1441 | int rfd, | 1340 | const struct GNUNET_NETWORK_Handle *read_nh, |
1442 | int wfd, | 1341 | const struct GNUNET_NETWORK_Handle *write_nh, |
1342 | const struct GNUNET_DISK_FileHandle *read_fh, | ||
1343 | const struct GNUNET_DISK_FileHandle *write_fh, | ||
1443 | GNUNET_SCHEDULER_TaskCallback task, | 1344 | GNUNET_SCHEDULER_TaskCallback task, |
1444 | void *task_cls) | 1345 | void *task_cls) |
1445 | { | 1346 | { |
@@ -1448,39 +1349,23 @@ add_without_sets (struct GNUNET_TIME_Relative delay, | |||
1448 | GNUNET_assert (NULL != active_task); | 1349 | GNUNET_assert (NULL != active_task); |
1449 | GNUNET_assert (NULL != task); | 1350 | GNUNET_assert (NULL != task); |
1450 | t = GNUNET_new (struct GNUNET_SCHEDULER_Task); | 1351 | t = GNUNET_new (struct GNUNET_SCHEDULER_Task); |
1352 | init_fd_info (t, | ||
1353 | &read_nh, | ||
1354 | read_nh ? 1 : 0, | ||
1355 | &write_nh, | ||
1356 | write_nh ? 1 : 0, | ||
1357 | &read_fh, | ||
1358 | read_fh ? 1 : 0, | ||
1359 | &write_fh, | ||
1360 | write_fh ? 1 : 0); | ||
1451 | t->callback = task; | 1361 | t->callback = task; |
1452 | t->callback_cls = task_cls; | 1362 | t->callback_cls = task_cls; |
1453 | #if DEBUG_FDS | 1363 | #if DEBUG_FDS |
1454 | if (-1 != rfd) | 1364 | check_fd (t, NULL != read_nh ? GNUNET_NETWORK_get_fd (read_nh) : -1); |
1455 | { | 1365 | check_fd (t, NULL != write_nh ? GNUNET_NETWORK_get_fd (write_nh) : -1); |
1456 | int flags = fcntl (rfd, F_GETFD); | 1366 | check_fd (t, NULL != read_fh ? read_fh->fd : -1); |
1457 | 1367 | check_fd (t, NULL != write_fh ? write_fh->fd : -1); | |
1458 | if ((flags == -1) && (errno == EBADF)) | ||
1459 | { | ||
1460 | LOG (GNUNET_ERROR_TYPE_ERROR, | ||
1461 | "Got invalid file descriptor %d!\n", | ||
1462 | rfd); | ||
1463 | init_backtrace (t); | ||
1464 | GNUNET_assert (0); | ||
1465 | } | ||
1466 | } | ||
1467 | if (-1 != wfd) | ||
1468 | { | ||
1469 | int flags = fcntl (wfd, F_GETFD); | ||
1470 | |||
1471 | if (flags == -1 && errno == EBADF) | ||
1472 | { | ||
1473 | LOG (GNUNET_ERROR_TYPE_ERROR, | ||
1474 | "Got invalid file descriptor %d!\n", | ||
1475 | wfd); | ||
1476 | init_backtrace (t); | ||
1477 | GNUNET_assert (0); | ||
1478 | } | ||
1479 | } | ||
1480 | #endif | 1368 | #endif |
1481 | t->read_fd = rfd; | ||
1482 | GNUNET_assert (wfd >= -1); | ||
1483 | t->write_fd = wfd; | ||
1484 | #if PROFILE_DELAYS | 1369 | #if PROFILE_DELAYS |
1485 | t->start_time = GNUNET_TIME_absolute_get (); | 1370 | t->start_time = GNUNET_TIME_absolute_get (); |
1486 | #endif | 1371 | #endif |
@@ -1490,11 +1375,9 @@ add_without_sets (struct GNUNET_TIME_Relative delay, | |||
1490 | GNUNET_CONTAINER_DLL_insert (pending_head, | 1375 | GNUNET_CONTAINER_DLL_insert (pending_head, |
1491 | pending_tail, | 1376 | pending_tail, |
1492 | t); | 1377 | t); |
1378 | driver_add_multiple (t, GNUNET_SCHEDULER_ET_NONE); | ||
1493 | max_priority_added = GNUNET_MAX (max_priority_added, | 1379 | max_priority_added = GNUNET_MAX (max_priority_added, |
1494 | t->priority); | 1380 | t->priority); |
1495 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
1496 | "Adding task %p\n", | ||
1497 | t); | ||
1498 | init_backtrace (t); | 1381 | init_backtrace (t); |
1499 | return t; | 1382 | return t; |
1500 | } | 1383 | } |
@@ -1507,6 +1390,9 @@ add_without_sets (struct GNUNET_TIME_Relative delay, | |||
1507 | * used as a timeout on the socket being ready. The task will be | 1390 | * used as a timeout on the socket being ready. The task will be |
1508 | * scheduled for execution once either the delay has expired or the | 1391 | * scheduled for execution once either the delay has expired or the |
1509 | * socket operation is ready. It will be run with the DEFAULT priority. | 1392 | * socket operation is ready. It will be run with the DEFAULT priority. |
1393 | * Only allowed to be called as long as the scheduler is running | ||
1394 | * (#GNUNET_SCHEDULER_run or #GNUNET_SCHEDULER_run_with_driver has been | ||
1395 | * called and has not returned yet). | ||
1510 | * | 1396 | * |
1511 | * @param delay when should this operation time out? | 1397 | * @param delay when should this operation time out? |
1512 | * @param rfd read file-descriptor | 1398 | * @param rfd read file-descriptor |
@@ -1522,8 +1408,8 @@ GNUNET_SCHEDULER_add_read_net (struct GNUNET_TIME_Relative delay, | |||
1522 | void *task_cls) | 1408 | void *task_cls) |
1523 | { | 1409 | { |
1524 | return GNUNET_SCHEDULER_add_read_net_with_priority (delay, | 1410 | return GNUNET_SCHEDULER_add_read_net_with_priority (delay, |
1525 | GNUNET_SCHEDULER_PRIORITY_DEFAULT, | 1411 | GNUNET_SCHEDULER_PRIORITY_DEFAULT, |
1526 | rfd, task, task_cls); | 1412 | rfd, task, task_cls); |
1527 | } | 1413 | } |
1528 | 1414 | ||
1529 | 1415 | ||
@@ -1534,6 +1420,9 @@ GNUNET_SCHEDULER_add_read_net (struct GNUNET_TIME_Relative delay, | |||
1534 | * socket being ready. The task will be scheduled for execution once | 1420 | * socket being ready. The task will be scheduled for execution once |
1535 | * either the delay has expired or the socket operation is ready. It | 1421 | * either the delay has expired or the socket operation is ready. It |
1536 | * will be run with the DEFAULT priority. | 1422 | * will be run with the DEFAULT priority. |
1423 | * Only allowed to be called as long as the scheduler is running | ||
1424 | * (#GNUNET_SCHEDULER_run or #GNUNET_SCHEDULER_run_with_driver has been | ||
1425 | * called and has not returned yet). | ||
1537 | * | 1426 | * |
1538 | * @param delay when should this operation time out? | 1427 | * @param delay when should this operation time out? |
1539 | * @param priority priority to use for the task | 1428 | * @param priority priority to use for the task |
@@ -1545,9 +1434,9 @@ GNUNET_SCHEDULER_add_read_net (struct GNUNET_TIME_Relative delay, | |||
1545 | */ | 1434 | */ |
1546 | struct GNUNET_SCHEDULER_Task * | 1435 | struct GNUNET_SCHEDULER_Task * |
1547 | GNUNET_SCHEDULER_add_read_net_with_priority (struct GNUNET_TIME_Relative delay, | 1436 | GNUNET_SCHEDULER_add_read_net_with_priority (struct GNUNET_TIME_Relative delay, |
1548 | enum GNUNET_SCHEDULER_Priority priority, | 1437 | enum GNUNET_SCHEDULER_Priority priority, |
1549 | struct GNUNET_NETWORK_Handle *rfd, | 1438 | struct GNUNET_NETWORK_Handle *rfd, |
1550 | GNUNET_SCHEDULER_TaskCallback task, | 1439 | GNUNET_SCHEDULER_TaskCallback task, |
1551 | void *task_cls) | 1440 | void *task_cls) |
1552 | { | 1441 | { |
1553 | return GNUNET_SCHEDULER_add_net_with_priority (delay, priority, | 1442 | return GNUNET_SCHEDULER_add_net_with_priority (delay, priority, |
@@ -1565,6 +1454,9 @@ GNUNET_SCHEDULER_add_read_net_with_priority (struct GNUNET_TIME_Relative delay, | |||
1565 | * scheduled for execution once either the delay has expired or the | 1454 | * scheduled for execution once either the delay has expired or the |
1566 | * socket operation is ready. It will be run with the priority of | 1455 | * socket operation is ready. It will be run with the priority of |
1567 | * the calling task. | 1456 | * the calling task. |
1457 | * Only allowed to be called as long as the scheduler is running | ||
1458 | * (#GNUNET_SCHEDULER_run or #GNUNET_SCHEDULER_run_with_driver has been | ||
1459 | * called and has not returned yet). | ||
1568 | * | 1460 | * |
1569 | * @param delay when should this operation time out? | 1461 | * @param delay when should this operation time out? |
1570 | * @param wfd write file-descriptor | 1462 | * @param wfd write file-descriptor |
@@ -1592,6 +1484,9 @@ GNUNET_SCHEDULER_add_write_net (struct GNUNET_TIME_Relative delay, | |||
1592 | * used as a timeout on the socket being ready. The task will be | 1484 | * used as a timeout on the socket being ready. The task will be |
1593 | * scheduled for execution once either the delay has expired or the | 1485 | * scheduled for execution once either the delay has expired or the |
1594 | * socket operation is ready. | 1486 | * socket operation is ready. |
1487 | * Only allowed to be called as long as the scheduler is running | ||
1488 | * (#GNUNET_SCHEDULER_run or #GNUNET_SCHEDULER_run_with_driver has been | ||
1489 | * called and has not returned yet). | ||
1595 | * | 1490 | * |
1596 | * @param delay when should this operation time out? | 1491 | * @param delay when should this operation time out? |
1597 | * @param priority priority of the task | 1492 | * @param priority priority of the task |
@@ -1612,6 +1507,9 @@ GNUNET_SCHEDULER_add_net_with_priority (struct GNUNET_TIME_Relative delay, | |||
1612 | GNUNET_SCHEDULER_TaskCallback task, | 1507 | GNUNET_SCHEDULER_TaskCallback task, |
1613 | void *task_cls) | 1508 | void *task_cls) |
1614 | { | 1509 | { |
1510 | /* scheduler must be running */ | ||
1511 | GNUNET_assert (NULL != scheduler_driver); | ||
1512 | |||
1615 | #if MINGW | 1513 | #if MINGW |
1616 | struct GNUNET_NETWORK_FDSet *s; | 1514 | struct GNUNET_NETWORK_FDSet *s; |
1617 | struct GNUNET_SCHEDULER_Task * ret; | 1515 | struct GNUNET_SCHEDULER_Task * ret; |
@@ -1627,10 +1525,13 @@ GNUNET_SCHEDULER_add_net_with_priority (struct GNUNET_TIME_Relative delay, | |||
1627 | GNUNET_NETWORK_fdset_destroy (s); | 1525 | GNUNET_NETWORK_fdset_destroy (s); |
1628 | return ret; | 1526 | return ret; |
1629 | #else | 1527 | #else |
1528 | GNUNET_assert (on_read || on_write); | ||
1630 | GNUNET_assert (GNUNET_NETWORK_get_fd (fd) >= 0); | 1529 | GNUNET_assert (GNUNET_NETWORK_get_fd (fd) >= 0); |
1631 | return add_without_sets (delay, priority, | 1530 | return add_without_sets (delay, priority, |
1632 | on_read ? GNUNET_NETWORK_get_fd (fd) : -1, | 1531 | on_read ? fd : NULL, |
1633 | on_write ? GNUNET_NETWORK_get_fd (fd) : -1, | 1532 | on_write ? fd : NULL, |
1533 | NULL, | ||
1534 | NULL, | ||
1634 | task, task_cls); | 1535 | task, task_cls); |
1635 | #endif | 1536 | #endif |
1636 | } | 1537 | } |
@@ -1642,6 +1543,9 @@ GNUNET_SCHEDULER_add_net_with_priority (struct GNUNET_TIME_Relative delay, | |||
1642 | * used as a timeout on the socket being ready. The task will be | 1543 | * used as a timeout on the socket being ready. The task will be |
1643 | * scheduled for execution once either the delay has expired or the | 1544 | * scheduled for execution once either the delay has expired or the |
1644 | * socket operation is ready. It will be run with the DEFAULT priority. | 1545 | * socket operation is ready. It will be run with the DEFAULT priority. |
1546 | * Only allowed to be called as long as the scheduler is running | ||
1547 | * (#GNUNET_SCHEDULER_run or #GNUNET_SCHEDULER_run_with_driver has been | ||
1548 | * called and has not returned yet). | ||
1645 | * | 1549 | * |
1646 | * @param delay when should this operation time out? | 1550 | * @param delay when should this operation time out? |
1647 | * @param rfd read file-descriptor | 1551 | * @param rfd read file-descriptor |
@@ -1668,6 +1572,9 @@ GNUNET_SCHEDULER_add_read_file (struct GNUNET_TIME_Relative delay, | |||
1668 | * used as a timeout on the socket being ready. The task will be | 1572 | * used as a timeout on the socket being ready. The task will be |
1669 | * scheduled for execution once either the delay has expired or the | 1573 | * scheduled for execution once either the delay has expired or the |
1670 | * socket operation is ready. It will be run with the DEFAULT priority. | 1574 | * socket operation is ready. It will be run with the DEFAULT priority. |
1575 | * Only allowed to be called as long as the scheduler is running | ||
1576 | * (#GNUNET_SCHEDULER_run or #GNUNET_SCHEDULER_run_with_driver has been | ||
1577 | * called and has not returned yet). | ||
1671 | * | 1578 | * |
1672 | * @param delay when should this operation time out? | 1579 | * @param delay when should this operation time out? |
1673 | * @param wfd write file-descriptor | 1580 | * @param wfd write file-descriptor |
@@ -1694,6 +1601,9 @@ GNUNET_SCHEDULER_add_write_file (struct GNUNET_TIME_Relative delay, | |||
1694 | * used as a timeout on the socket being ready. The task will be | 1601 | * used as a timeout on the socket being ready. The task will be |
1695 | * scheduled for execution once either the delay has expired or the | 1602 | * scheduled for execution once either the delay has expired or the |
1696 | * socket operation is ready. | 1603 | * socket operation is ready. |
1604 | * Only allowed to be called as long as the scheduler is running | ||
1605 | * (#GNUNET_SCHEDULER_run or #GNUNET_SCHEDULER_run_with_driver has been | ||
1606 | * called and has not returned yet). | ||
1697 | * | 1607 | * |
1698 | * @param delay when should this operation time out? | 1608 | * @param delay when should this operation time out? |
1699 | * @param priority priority of the task | 1609 | * @param priority priority of the task |
@@ -1712,6 +1622,9 @@ GNUNET_SCHEDULER_add_file_with_priority (struct GNUNET_TIME_Relative delay, | |||
1712 | int on_read, int on_write, | 1622 | int on_read, int on_write, |
1713 | GNUNET_SCHEDULER_TaskCallback task, void *task_cls) | 1623 | GNUNET_SCHEDULER_TaskCallback task, void *task_cls) |
1714 | { | 1624 | { |
1625 | /* scheduler must be running */ | ||
1626 | GNUNET_assert (NULL != scheduler_driver); | ||
1627 | |||
1715 | #if MINGW | 1628 | #if MINGW |
1716 | struct GNUNET_NETWORK_FDSet *s; | 1629 | struct GNUNET_NETWORK_FDSet *s; |
1717 | struct GNUNET_SCHEDULER_Task * ret; | 1630 | struct GNUNET_SCHEDULER_Task * ret; |
@@ -1727,19 +1640,70 @@ GNUNET_SCHEDULER_add_file_with_priority (struct GNUNET_TIME_Relative delay, | |||
1727 | GNUNET_NETWORK_fdset_destroy (s); | 1640 | GNUNET_NETWORK_fdset_destroy (s); |
1728 | return ret; | 1641 | return ret; |
1729 | #else | 1642 | #else |
1730 | int real_fd; | 1643 | GNUNET_assert (on_read || on_write); |
1731 | 1644 | GNUNET_assert (fd->fd >= 0); | |
1732 | GNUNET_DISK_internal_file_handle_ (fd, &real_fd, sizeof (int)); | 1645 | return add_without_sets (delay, priority, |
1733 | GNUNET_assert (real_fd >= 0); | 1646 | NULL, |
1734 | return add_without_sets ( | 1647 | NULL, |
1735 | delay, priority, | 1648 | on_read ? fd : NULL, |
1736 | on_read ? real_fd : -1, | 1649 | on_write ? fd : NULL, |
1737 | on_write ? real_fd : -1, | 1650 | task, task_cls); |
1738 | task, task_cls); | ||
1739 | #endif | 1651 | #endif |
1740 | } | 1652 | } |
1741 | 1653 | ||
1742 | 1654 | ||
1655 | void | ||
1656 | extract_handles (struct GNUNET_SCHEDULER_Task *t, | ||
1657 | const struct GNUNET_NETWORK_FDSet *fdset, | ||
1658 | const struct GNUNET_NETWORK_Handle ***ntarget, | ||
1659 | unsigned int *extracted_nhandles, | ||
1660 | const struct GNUNET_DISK_FileHandle ***ftarget, | ||
1661 | unsigned int *extracted_fhandles) | ||
1662 | { | ||
1663 | // FIXME: this implementation only works for unix, for WIN32 the file handles | ||
1664 | // in fdset must be handled separately | ||
1665 | const struct GNUNET_NETWORK_Handle **nhandles; | ||
1666 | const struct GNUNET_DISK_FileHandle **fhandles; | ||
1667 | unsigned int nhandles_len, fhandles_len; | ||
1668 | int sock; | ||
1669 | |||
1670 | nhandles = NULL; | ||
1671 | fhandles = NULL; | ||
1672 | nhandles_len = 0; | ||
1673 | fhandles_len = 0; | ||
1674 | for (sock = 0; sock != fdset->nsds; ++sock) | ||
1675 | { | ||
1676 | if (GNUNET_YES == GNUNET_NETWORK_fdset_test_native (fdset, sock)) | ||
1677 | { | ||
1678 | struct GNUNET_NETWORK_Handle *nhandle; | ||
1679 | struct GNUNET_DISK_FileHandle *fhandle; | ||
1680 | |||
1681 | nhandle = GNUNET_NETWORK_socket_box_native (sock); | ||
1682 | if (NULL != nhandle) | ||
1683 | { | ||
1684 | GNUNET_array_append (nhandles, nhandles_len, nhandle); | ||
1685 | } | ||
1686 | else | ||
1687 | { | ||
1688 | fhandle = GNUNET_DISK_get_handle_from_int_fd (sock); | ||
1689 | if (NULL != fhandle) | ||
1690 | { | ||
1691 | GNUNET_array_append (fhandles, fhandles_len, fhandle); | ||
1692 | } | ||
1693 | else | ||
1694 | { | ||
1695 | GNUNET_assert (0); | ||
1696 | } | ||
1697 | } | ||
1698 | } | ||
1699 | } | ||
1700 | *ntarget = nhandles_len > 0 ? nhandles : NULL; | ||
1701 | *ftarget = fhandles_len > 0 ? fhandles : NULL; | ||
1702 | *extracted_nhandles = nhandles_len; | ||
1703 | *extracted_fhandles = fhandles_len; | ||
1704 | } | ||
1705 | |||
1706 | |||
1743 | /** | 1707 | /** |
1744 | * Schedule a new task to be run with a specified delay or when any of | 1708 | * Schedule a new task to be run with a specified delay or when any of |
1745 | * the specified file descriptor sets is ready. The delay can be used | 1709 | * the specified file descriptor sets is ready. The delay can be used |
@@ -1755,6 +1719,9 @@ GNUNET_SCHEDULER_add_file_with_priority (struct GNUNET_TIME_Relative delay, | |||
1755 | * || any-rs-ready | 1719 | * || any-rs-ready |
1756 | * || any-ws-ready) ) | 1720 | * || any-ws-ready) ) |
1757 | * </code> | 1721 | * </code> |
1722 | * Only allowed to be called as long as the scheduler is running | ||
1723 | * (#GNUNET_SCHEDULER_run or #GNUNET_SCHEDULER_run_with_driver has been | ||
1724 | * called and has not returned yet). | ||
1758 | * | 1725 | * |
1759 | * @param prio how important is this task? | 1726 | * @param prio how important is this task? |
1760 | * @param delay how long should we wait? | 1727 | * @param delay how long should we wait? |
@@ -1774,13 +1741,20 @@ GNUNET_SCHEDULER_add_select (enum GNUNET_SCHEDULER_Priority prio, | |||
1774 | void *task_cls) | 1741 | void *task_cls) |
1775 | { | 1742 | { |
1776 | struct GNUNET_SCHEDULER_Task *t; | 1743 | struct GNUNET_SCHEDULER_Task *t; |
1777 | 1744 | const struct GNUNET_NETWORK_Handle **read_nhandles; | |
1778 | if ( (NULL == rs) && | 1745 | const struct GNUNET_NETWORK_Handle **write_nhandles; |
1779 | (NULL == ws) ) | 1746 | const struct GNUNET_DISK_FileHandle **read_fhandles; |
1747 | const struct GNUNET_DISK_FileHandle **write_fhandles; | ||
1748 | unsigned int read_nhandles_len, write_nhandles_len, | ||
1749 | read_fhandles_len, write_fhandles_len; | ||
1750 | |||
1751 | if (((NULL == rs) && (NULL == ws)) || ((0 == rs->nsds) && (0 == ws->nsds))) | ||
1780 | return GNUNET_SCHEDULER_add_delayed_with_priority (delay, | 1752 | return GNUNET_SCHEDULER_add_delayed_with_priority (delay, |
1781 | prio, | 1753 | prio, |
1782 | task, | 1754 | task, |
1783 | task_cls); | 1755 | task_cls); |
1756 | /* scheduler must be running */ | ||
1757 | GNUNET_assert (NULL != scheduler_driver); | ||
1784 | GNUNET_assert (NULL != active_task); | 1758 | GNUNET_assert (NULL != active_task); |
1785 | GNUNET_assert (NULL != task); | 1759 | GNUNET_assert (NULL != task); |
1786 | t = GNUNET_new (struct GNUNET_SCHEDULER_Task); | 1760 | t = GNUNET_new (struct GNUNET_SCHEDULER_Task); |
@@ -1788,16 +1762,48 @@ GNUNET_SCHEDULER_add_select (enum GNUNET_SCHEDULER_Priority prio, | |||
1788 | t->callback_cls = task_cls; | 1762 | t->callback_cls = task_cls; |
1789 | t->read_fd = -1; | 1763 | t->read_fd = -1; |
1790 | t->write_fd = -1; | 1764 | t->write_fd = -1; |
1765 | t->own_handles = GNUNET_YES; | ||
1766 | read_nhandles = NULL; | ||
1767 | write_nhandles = NULL; | ||
1768 | read_fhandles = NULL; | ||
1769 | write_fhandles = NULL; | ||
1770 | read_nhandles_len = 0; | ||
1771 | write_nhandles_len = 0; | ||
1772 | read_fhandles_len = 0; | ||
1773 | write_fhandles_len = 0; | ||
1791 | if (NULL != rs) | 1774 | if (NULL != rs) |
1792 | { | 1775 | { |
1793 | t->read_set = GNUNET_NETWORK_fdset_create (); | 1776 | extract_handles (t, |
1794 | GNUNET_NETWORK_fdset_copy (t->read_set, rs); | 1777 | rs, |
1778 | &read_nhandles, | ||
1779 | &read_nhandles_len, | ||
1780 | &read_fhandles, | ||
1781 | &read_fhandles_len); | ||
1795 | } | 1782 | } |
1796 | if (NULL != ws) | 1783 | if (NULL != ws) |
1797 | { | 1784 | { |
1798 | t->write_set = GNUNET_NETWORK_fdset_create (); | 1785 | extract_handles (t, |
1799 | GNUNET_NETWORK_fdset_copy (t->write_set, ws); | 1786 | ws, |
1787 | &write_nhandles, | ||
1788 | &write_nhandles_len, | ||
1789 | &write_fhandles, | ||
1790 | &write_fhandles_len); | ||
1800 | } | 1791 | } |
1792 | init_fd_info (t, | ||
1793 | read_nhandles, | ||
1794 | read_nhandles_len, | ||
1795 | write_nhandles, | ||
1796 | write_nhandles_len, | ||
1797 | read_fhandles, | ||
1798 | read_fhandles_len, | ||
1799 | write_fhandles, | ||
1800 | write_fhandles_len); | ||
1801 | /* free the arrays of pointers to network / file handles, the actual | ||
1802 | * handles will be freed in destroy_task */ | ||
1803 | GNUNET_array_grow (read_nhandles, read_nhandles_len, 0); | ||
1804 | GNUNET_array_grow (write_nhandles, write_nhandles_len, 0); | ||
1805 | GNUNET_array_grow (read_fhandles, read_fhandles_len, 0); | ||
1806 | GNUNET_array_grow (write_fhandles, write_fhandles_len, 0); | ||
1801 | #if PROFILE_DELAYS | 1807 | #if PROFILE_DELAYS |
1802 | t->start_time = GNUNET_TIME_absolute_get (); | 1808 | t->start_time = GNUNET_TIME_absolute_get (); |
1803 | #endif | 1809 | #endif |
@@ -1810,8 +1816,9 @@ GNUNET_SCHEDULER_add_select (enum GNUNET_SCHEDULER_Priority prio, | |||
1810 | GNUNET_CONTAINER_DLL_insert (pending_head, | 1816 | GNUNET_CONTAINER_DLL_insert (pending_head, |
1811 | pending_tail, | 1817 | pending_tail, |
1812 | t); | 1818 | t); |
1819 | driver_add_multiple (t, GNUNET_SCHEDULER_ET_NONE); | ||
1813 | max_priority_added = GNUNET_MAX (max_priority_added, | 1820 | max_priority_added = GNUNET_MAX (max_priority_added, |
1814 | t->priority); | 1821 | t->priority); |
1815 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 1822 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
1816 | "Adding task %p\n", | 1823 | "Adding task %p\n", |
1817 | t); | 1824 | t); |
@@ -1822,17 +1829,18 @@ GNUNET_SCHEDULER_add_select (enum GNUNET_SCHEDULER_Priority prio, | |||
1822 | 1829 | ||
1823 | /** | 1830 | /** |
1824 | * Function used by event-loop implementations to signal the scheduler | 1831 | * Function used by event-loop implementations to signal the scheduler |
1825 | * that a particular @a task is ready due to an event of type @a et. | 1832 | * that a particular @a task is ready due to an event specified in the |
1833 | * et field of @a fdi. | ||
1826 | * | 1834 | * |
1827 | * This function will then queue the task to notify the application | 1835 | * This function will then queue the task to notify the application |
1828 | * that the task is ready (with the respective priority). | 1836 | * that the task is ready (with the respective priority). |
1829 | * | 1837 | * |
1830 | * @param task the task that is ready, NULL for wake up calls | 1838 | * @param task the task that is ready |
1831 | * @param et information about why the task is ready | 1839 | * @param fdi information about the related FD |
1832 | */ | 1840 | */ |
1833 | void | 1841 | void |
1834 | GNUNET_SCHEDULER_task_ready (struct GNUNET_SCHEDULER_Task *task, | 1842 | GNUNET_SCHEDULER_task_ready (struct GNUNET_SCHEDULER_Task *task, |
1835 | enum GNUNET_SCHEDULER_EventType et) | 1843 | struct GNUNET_SCHEDULER_FdInfo *fdi) |
1836 | { | 1844 | { |
1837 | enum GNUNET_SCHEDULER_Reason reason; | 1845 | enum GNUNET_SCHEDULER_Reason reason; |
1838 | struct GNUNET_TIME_Absolute now; | 1846 | struct GNUNET_TIME_Absolute now; |
@@ -1842,17 +1850,20 @@ GNUNET_SCHEDULER_task_ready (struct GNUNET_SCHEDULER_Task *task, | |||
1842 | if (now.abs_value_us >= task->timeout.abs_value_us) | 1850 | if (now.abs_value_us >= task->timeout.abs_value_us) |
1843 | reason |= GNUNET_SCHEDULER_REASON_TIMEOUT; | 1851 | reason |= GNUNET_SCHEDULER_REASON_TIMEOUT; |
1844 | if ( (0 == (reason & GNUNET_SCHEDULER_REASON_READ_READY)) && | 1852 | if ( (0 == (reason & GNUNET_SCHEDULER_REASON_READ_READY)) && |
1845 | (0 != (GNUNET_SCHEDULER_ET_IN & et)) ) | 1853 | (0 != (GNUNET_SCHEDULER_ET_IN & fdi->et)) ) |
1846 | reason |= GNUNET_SCHEDULER_REASON_READ_READY; | 1854 | reason |= GNUNET_SCHEDULER_REASON_READ_READY; |
1847 | if ( (0 == (reason & GNUNET_SCHEDULER_REASON_WRITE_READY)) && | 1855 | if ( (0 == (reason & GNUNET_SCHEDULER_REASON_WRITE_READY)) && |
1848 | (0 != (GNUNET_SCHEDULER_ET_OUT & et)) ) | 1856 | (0 != (GNUNET_SCHEDULER_ET_OUT & fdi->et)) ) |
1849 | reason |= GNUNET_SCHEDULER_REASON_WRITE_READY; | 1857 | reason |= GNUNET_SCHEDULER_REASON_WRITE_READY; |
1850 | reason |= GNUNET_SCHEDULER_REASON_PREREQ_DONE; | 1858 | reason |= GNUNET_SCHEDULER_REASON_PREREQ_DONE; |
1851 | task->reason = reason; | 1859 | task->reason = reason; |
1852 | task->fds = &task->fdx; | 1860 | if (GNUNET_NO == task->in_ready_list) |
1853 | task->fdx.et = et; | 1861 | { |
1854 | task->fds_len = 1; | 1862 | GNUNET_CONTAINER_DLL_remove (pending_head, |
1855 | queue_ready_task (task); | 1863 | pending_tail, |
1864 | task); | ||
1865 | queue_ready_task (task); | ||
1866 | } | ||
1856 | } | 1867 | } |
1857 | 1868 | ||
1858 | 1869 | ||
@@ -1862,15 +1873,16 @@ GNUNET_SCHEDULER_task_ready (struct GNUNET_SCHEDULER_Task *task, | |||
1862 | * there are tasks left to run just to give other tasks a chance as | 1873 | * there are tasks left to run just to give other tasks a chance as |
1863 | * well. If we return #GNUNET_YES, the driver should call this | 1874 | * well. If we return #GNUNET_YES, the driver should call this |
1864 | * function again as soon as possible, while if we return #GNUNET_NO | 1875 | * function again as soon as possible, while if we return #GNUNET_NO |
1865 | * it must block until the operating system has more work as the | 1876 | * it must block until either the operating system has more work (the |
1866 | * scheduler has no more work to do right now. | 1877 | * scheduler has no more work to do right now) or the timeout set by |
1878 | * the scheduler (using the set_wakeup callback) is reached. | ||
1867 | * | 1879 | * |
1868 | * @param sh scheduler handle that was given to the `loop` | 1880 | * @param sh scheduler handle that was given to the `loop` |
1869 | * @return #GNUNET_OK if there are more tasks that are ready, | 1881 | * @return #GNUNET_OK if there are more tasks that are ready, |
1870 | * and thus we would like to run more (yield to avoid | 1882 | * and thus we would like to run more (yield to avoid |
1871 | * blocking other activities for too long) | 1883 | * blocking other activities for too long) |
1872 | * #GNUNET_NO if we are done running tasks (yield to block) | 1884 | * #GNUNET_NO if we are done running tasks (yield to block) |
1873 | * #GNUNET_SYSERR on error | 1885 | * #GNUNET_SYSERR on error, e.g. no tasks were ready |
1874 | */ | 1886 | */ |
1875 | int | 1887 | int |
1876 | GNUNET_SCHEDULER_run_from_driver (struct GNUNET_SCHEDULER_Handle *sh) | 1888 | GNUNET_SCHEDULER_run_from_driver (struct GNUNET_SCHEDULER_Handle *sh) |
@@ -1894,9 +1906,27 @@ GNUNET_SCHEDULER_run_from_driver (struct GNUNET_SCHEDULER_Handle *sh) | |||
1894 | pending_timeout_last = NULL; | 1906 | pending_timeout_last = NULL; |
1895 | queue_ready_task (pos); | 1907 | queue_ready_task (pos); |
1896 | } | 1908 | } |
1909 | pos = pending_head; | ||
1910 | while (NULL != pos) | ||
1911 | { | ||
1912 | struct GNUNET_SCHEDULER_Task *next = pos->next; | ||
1913 | if (now.abs_value_us >= pos->timeout.abs_value_us) | ||
1914 | { | ||
1915 | pos->reason |= GNUNET_SCHEDULER_REASON_TIMEOUT; | ||
1916 | GNUNET_CONTAINER_DLL_remove (pending_head, | ||
1917 | pending_tail, | ||
1918 | pos); | ||
1919 | queue_ready_task (pos); | ||
1920 | } | ||
1921 | pos = next; | ||
1922 | } | ||
1897 | 1923 | ||
1898 | if (0 == ready_count) | 1924 | if (0 == ready_count) |
1899 | return GNUNET_NO; | 1925 | { |
1926 | LOG (GNUNET_ERROR_TYPE_ERROR, | ||
1927 | "GNUNET_SCHEDULER_run_from_driver was called, but no tasks are ready!\n"); | ||
1928 | return GNUNET_SYSERR; | ||
1929 | } | ||
1900 | 1930 | ||
1901 | /* find out which task priority level we are going to | 1931 | /* find out which task priority level we are going to |
1902 | process this time */ | 1932 | process this time */ |
@@ -1916,49 +1946,74 @@ GNUNET_SCHEDULER_run_from_driver (struct GNUNET_SCHEDULER_Handle *sh) | |||
1916 | while (NULL != (pos = ready_head[p])) | 1946 | while (NULL != (pos = ready_head[p])) |
1917 | { | 1947 | { |
1918 | GNUNET_CONTAINER_DLL_remove (ready_head[p], | 1948 | GNUNET_CONTAINER_DLL_remove (ready_head[p], |
1919 | ready_tail[p], | 1949 | ready_tail[p], |
1920 | pos); | 1950 | pos); |
1921 | ready_count--; | 1951 | ready_count--; |
1922 | current_priority = pos->priority; | 1952 | current_priority = pos->priority; |
1923 | current_lifeness = pos->lifeness; | 1953 | current_lifeness = pos->lifeness; |
1924 | active_task = pos; | 1954 | active_task = pos; |
1925 | #if PROFILE_DELAYS | 1955 | #if PROFILE_DELAYS |
1926 | if (GNUNET_TIME_absolute_get_duration (pos->start_time).rel_value_us > | 1956 | if (GNUNET_TIME_absolute_get_duration (pos->start_time).rel_value_us > |
1927 | DELAY_THRESHOLD.rel_value_us) | 1957 | DELAY_THRESHOLD.rel_value_us) |
1928 | { | 1958 | { |
1929 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 1959 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
1930 | "Task %p took %s to be scheduled\n", | 1960 | "Task %p took %s to be scheduled\n", |
1931 | pos, | 1961 | pos, |
1932 | GNUNET_STRINGS_relative_time_to_string (GNUNET_TIME_absolute_get_duration (pos->start_time), | 1962 | GNUNET_STRINGS_relative_time_to_string (GNUNET_TIME_absolute_get_duration (pos->start_time), |
1933 | GNUNET_YES)); | 1963 | GNUNET_YES)); |
1934 | } | 1964 | } |
1935 | #endif | 1965 | #endif |
1936 | tc.reason = pos->reason; | 1966 | tc.reason = pos->reason; |
1937 | GNUNET_NETWORK_fdset_zero (sh->rs); | 1967 | GNUNET_NETWORK_fdset_zero (sh->rs); |
1938 | GNUNET_NETWORK_fdset_zero (sh->ws); | 1968 | GNUNET_NETWORK_fdset_zero (sh->ws); |
1969 | // FIXME: do we have to remove FdInfos from fds if they are not ready? | ||
1939 | tc.fds_len = pos->fds_len; | 1970 | tc.fds_len = pos->fds_len; |
1940 | tc.fds = pos->fds; | 1971 | tc.fds = pos->fds; |
1941 | tc.read_ready = (NULL == pos->read_set) ? sh->rs : pos->read_set; | 1972 | for (int i = 0; i != pos->fds_len; ++i) |
1942 | if ( (-1 != pos->read_fd) && | 1973 | { |
1943 | (0 != (pos->reason & GNUNET_SCHEDULER_REASON_READ_READY)) ) | 1974 | struct GNUNET_SCHEDULER_FdInfo *fdi = &pos->fds[i]; |
1944 | GNUNET_NETWORK_fdset_set_native (sh->rs, | 1975 | if (0 != (GNUNET_SCHEDULER_ET_IN & fdi->et)) |
1945 | pos->read_fd); | 1976 | { |
1946 | tc.write_ready = (NULL == pos->write_set) ? sh->ws : pos->write_set; | 1977 | GNUNET_NETWORK_fdset_set_native (sh->rs, |
1947 | if ((-1 != pos->write_fd) && | 1978 | fdi->sock); |
1948 | (0 != (pos->reason & GNUNET_SCHEDULER_REASON_WRITE_READY))) | 1979 | } |
1949 | GNUNET_NETWORK_fdset_set_native (sh->ws, | 1980 | if (0 != (GNUNET_SCHEDULER_ET_OUT & fdi->et)) |
1950 | pos->write_fd); | 1981 | { |
1982 | GNUNET_NETWORK_fdset_set_native (sh->ws, | ||
1983 | fdi->sock); | ||
1984 | } | ||
1985 | } | ||
1986 | tc.read_ready = sh->rs; | ||
1987 | tc.write_ready = sh->ws; | ||
1951 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 1988 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
1952 | "Running task: %p\n", | 1989 | "Running task %p\n", |
1953 | pos); | 1990 | pos); |
1991 | GNUNET_assert (NULL != pos->callback); | ||
1954 | pos->callback (pos->callback_cls); | 1992 | pos->callback (pos->callback_cls); |
1993 | if (NULL != pos->fds) | ||
1994 | { | ||
1995 | int del_result = scheduler_driver->del (scheduler_driver->cls, pos); | ||
1996 | if (GNUNET_OK != del_result) | ||
1997 | { | ||
1998 | LOG (GNUNET_ERROR_TYPE_ERROR, | ||
1999 | "driver could not delete task\n"); | ||
2000 | GNUNET_assert (0); | ||
2001 | } | ||
2002 | } | ||
1955 | active_task = NULL; | 2003 | active_task = NULL; |
1956 | dump_backtrace (pos); | 2004 | dump_backtrace (pos); |
1957 | destroy_task (pos); | 2005 | destroy_task (pos); |
1958 | tasks_run++; | 2006 | tasks_run++; |
1959 | } | 2007 | } |
2008 | shutdown_if_no_lifeness (); | ||
1960 | if (0 == ready_count) | 2009 | if (0 == ready_count) |
2010 | { | ||
2011 | scheduler_driver->set_wakeup (scheduler_driver->cls, | ||
2012 | get_timeout ()); | ||
1961 | return GNUNET_NO; | 2013 | return GNUNET_NO; |
2014 | } | ||
2015 | scheduler_driver->set_wakeup (scheduler_driver->cls, | ||
2016 | GNUNET_TIME_absolute_get ()); | ||
1962 | return GNUNET_OK; | 2017 | return GNUNET_OK; |
1963 | } | 2018 | } |
1964 | 2019 | ||
@@ -1981,8 +2036,8 @@ GNUNET_SCHEDULER_run_from_driver (struct GNUNET_SCHEDULER_Handle *sh) | |||
1981 | */ | 2036 | */ |
1982 | int | 2037 | int |
1983 | GNUNET_SCHEDULER_run_with_driver (const struct GNUNET_SCHEDULER_Driver *driver, | 2038 | GNUNET_SCHEDULER_run_with_driver (const struct GNUNET_SCHEDULER_Driver *driver, |
1984 | GNUNET_SCHEDULER_TaskCallback task, | 2039 | GNUNET_SCHEDULER_TaskCallback task, |
1985 | void *task_cls) | 2040 | void *task_cls) |
1986 | { | 2041 | { |
1987 | int ret; | 2042 | int ret; |
1988 | struct GNUNET_SIGNAL_Context *shc_int; | 2043 | struct GNUNET_SIGNAL_Context *shc_int; |
@@ -1997,7 +2052,6 @@ GNUNET_SCHEDULER_run_with_driver (const struct GNUNET_SCHEDULER_Driver *driver, | |||
1997 | #endif | 2052 | #endif |
1998 | struct GNUNET_SCHEDULER_Task tsk; | 2053 | struct GNUNET_SCHEDULER_Task tsk; |
1999 | const struct GNUNET_DISK_FileHandle *pr; | 2054 | const struct GNUNET_DISK_FileHandle *pr; |
2000 | struct GNUNET_SCHEDULER_Handle sh; | ||
2001 | 2055 | ||
2002 | /* general set-up */ | 2056 | /* general set-up */ |
2003 | GNUNET_assert (NULL == active_task); | 2057 | GNUNET_assert (NULL == active_task); |
@@ -2009,54 +2063,56 @@ GNUNET_SCHEDULER_run_with_driver (const struct GNUNET_SCHEDULER_Driver *driver, | |||
2009 | GNUNET_assert (NULL != shutdown_pipe_handle); | 2063 | GNUNET_assert (NULL != shutdown_pipe_handle); |
2010 | pr = GNUNET_DISK_pipe_handle (shutdown_pipe_handle, | 2064 | pr = GNUNET_DISK_pipe_handle (shutdown_pipe_handle, |
2011 | GNUNET_DISK_PIPE_END_READ); | 2065 | GNUNET_DISK_PIPE_END_READ); |
2012 | GNUNET_assert (NULL != pr); | ||
2013 | my_pid = getpid (); | 2066 | my_pid = getpid (); |
2067 | scheduler_driver = driver; | ||
2014 | 2068 | ||
2015 | /* install signal handlers */ | 2069 | /* install signal handlers */ |
2016 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 2070 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
2017 | "Registering signal handlers\n"); | 2071 | "Registering signal handlers\n"); |
2018 | shc_int = GNUNET_SIGNAL_handler_install (SIGINT, | 2072 | shc_int = GNUNET_SIGNAL_handler_install (SIGINT, |
2019 | &sighandler_shutdown); | 2073 | &sighandler_shutdown); |
2020 | shc_term = GNUNET_SIGNAL_handler_install (SIGTERM, | 2074 | shc_term = GNUNET_SIGNAL_handler_install (SIGTERM, |
2021 | &sighandler_shutdown); | 2075 | &sighandler_shutdown); |
2022 | #if (SIGTERM != GNUNET_TERM_SIG) | 2076 | #if (SIGTERM != GNUNET_TERM_SIG) |
2023 | shc_gterm = GNUNET_SIGNAL_handler_install (GNUNET_TERM_SIG, | 2077 | shc_gterm = GNUNET_SIGNAL_handler_install (GNUNET_TERM_SIG, |
2024 | &sighandler_shutdown); | 2078 | &sighandler_shutdown); |
2025 | #endif | 2079 | #endif |
2026 | #ifndef MINGW | 2080 | #ifndef MINGW |
2027 | shc_pipe = GNUNET_SIGNAL_handler_install (SIGPIPE, | 2081 | shc_pipe = GNUNET_SIGNAL_handler_install (SIGPIPE, |
2028 | &sighandler_pipe); | 2082 | &sighandler_pipe); |
2029 | shc_quit = GNUNET_SIGNAL_handler_install (SIGQUIT, | 2083 | shc_quit = GNUNET_SIGNAL_handler_install (SIGQUIT, |
2030 | &sighandler_shutdown); | 2084 | &sighandler_shutdown); |
2031 | shc_hup = GNUNET_SIGNAL_handler_install (SIGHUP, | 2085 | shc_hup = GNUNET_SIGNAL_handler_install (SIGHUP, |
2032 | &sighandler_shutdown); | 2086 | &sighandler_shutdown); |
2033 | #endif | 2087 | #endif |
2034 | 2088 | ||
2035 | /* Setup initial tasks */ | 2089 | /* Setup initial tasks */ |
2036 | current_priority = GNUNET_SCHEDULER_PRIORITY_DEFAULT; | 2090 | current_priority = GNUNET_SCHEDULER_PRIORITY_DEFAULT; |
2037 | current_lifeness = GNUNET_YES; | 2091 | current_lifeness = GNUNET_NO; |
2038 | memset (&tsk, | 2092 | memset (&tsk, |
2039 | 0, | 2093 | 0, |
2040 | sizeof (tsk)); | 2094 | sizeof (tsk)); |
2041 | active_task = &tsk; | 2095 | active_task = &tsk; |
2042 | tsk.sh = &sh; | 2096 | GNUNET_SCHEDULER_add_now (&GNUNET_OS_install_parent_control_handler, |
2097 | NULL); | ||
2098 | GNUNET_SCHEDULER_add_read_file (GNUNET_TIME_UNIT_FOREVER_REL, | ||
2099 | pr, | ||
2100 | &shutdown_cb, | ||
2101 | NULL); | ||
2102 | current_lifeness = GNUNET_YES; | ||
2043 | GNUNET_SCHEDULER_add_with_reason_and_priority (task, | 2103 | GNUNET_SCHEDULER_add_with_reason_and_priority (task, |
2044 | task_cls, | 2104 | task_cls, |
2045 | GNUNET_SCHEDULER_REASON_STARTUP, | 2105 | GNUNET_SCHEDULER_REASON_STARTUP, |
2046 | GNUNET_SCHEDULER_PRIORITY_DEFAULT); | 2106 | GNUNET_SCHEDULER_PRIORITY_DEFAULT); |
2047 | GNUNET_SCHEDULER_add_now_with_lifeness (GNUNET_NO, | ||
2048 | &GNUNET_OS_install_parent_control_handler, | ||
2049 | NULL); | ||
2050 | active_task = NULL; | 2107 | active_task = NULL; |
2051 | driver->set_wakeup (driver->cls, | 2108 | scheduler_driver->set_wakeup (scheduler_driver->cls, |
2052 | GNUNET_TIME_absolute_get ()); | 2109 | get_timeout ()); |
2053 | |||
2054 | /* begin main event loop */ | 2110 | /* begin main event loop */ |
2055 | sh.rs = GNUNET_NETWORK_fdset_create (); | 2111 | sh.rs = GNUNET_NETWORK_fdset_create (); |
2056 | sh.ws = GNUNET_NETWORK_fdset_create (); | 2112 | sh.ws = GNUNET_NETWORK_fdset_create (); |
2057 | sh.driver = driver; | 2113 | GNUNET_NETWORK_fdset_handle_set (sh.rs, pr); |
2058 | ret = driver->loop (driver->cls, | 2114 | ret = driver->loop (driver->cls, |
2059 | &sh); | 2115 | &sh); |
2060 | GNUNET_NETWORK_fdset_destroy (sh.rs); | 2116 | GNUNET_NETWORK_fdset_destroy (sh.rs); |
2061 | GNUNET_NETWORK_fdset_destroy (sh.ws); | 2117 | GNUNET_NETWORK_fdset_destroy (sh.ws); |
2062 | 2118 | ||
@@ -2073,20 +2129,215 @@ GNUNET_SCHEDULER_run_with_driver (const struct GNUNET_SCHEDULER_Driver *driver, | |||
2073 | #endif | 2129 | #endif |
2074 | GNUNET_DISK_pipe_close (shutdown_pipe_handle); | 2130 | GNUNET_DISK_pipe_close (shutdown_pipe_handle); |
2075 | shutdown_pipe_handle = NULL; | 2131 | shutdown_pipe_handle = NULL; |
2132 | scheduler_driver = NULL; | ||
2076 | return ret; | 2133 | return ret; |
2077 | } | 2134 | } |
2078 | 2135 | ||
2079 | 2136 | ||
2137 | int | ||
2138 | select_add (void *cls, | ||
2139 | struct GNUNET_SCHEDULER_Task *task, | ||
2140 | struct GNUNET_SCHEDULER_FdInfo *fdi) | ||
2141 | { | ||
2142 | struct DriverContext *context = cls; | ||
2143 | GNUNET_assert (NULL != context); | ||
2144 | GNUNET_assert (NULL != task); | ||
2145 | GNUNET_assert (NULL != fdi); | ||
2146 | GNUNET_assert (0 != (GNUNET_SCHEDULER_ET_IN & fdi->et) || | ||
2147 | 0 != (GNUNET_SCHEDULER_ET_OUT & fdi->et)); | ||
2148 | |||
2149 | if (!((NULL != fdi->fd) ^ (NULL != fdi->fh)) || (fdi->sock < 0)) | ||
2150 | { | ||
2151 | /* exactly one out of {fd, hf} must be != NULL and the OS handle must be valid */ | ||
2152 | return GNUNET_SYSERR; | ||
2153 | } | ||
2154 | |||
2155 | struct Scheduled *scheduled = GNUNET_new (struct Scheduled); | ||
2156 | scheduled->task = task; | ||
2157 | scheduled->fdi = fdi; | ||
2158 | scheduled->et = fdi->et; | ||
2159 | |||
2160 | GNUNET_CONTAINER_DLL_insert (context->scheduled_head, | ||
2161 | context->scheduled_tail, | ||
2162 | scheduled); | ||
2163 | return GNUNET_OK; | ||
2164 | } | ||
2165 | |||
2166 | |||
2167 | int | ||
2168 | select_del (void *cls, | ||
2169 | struct GNUNET_SCHEDULER_Task *task) | ||
2170 | { | ||
2171 | struct DriverContext *context; | ||
2172 | struct Scheduled *pos; | ||
2173 | int ret; | ||
2174 | |||
2175 | GNUNET_assert (NULL != cls); | ||
2176 | |||
2177 | context = cls; | ||
2178 | ret = GNUNET_SYSERR; | ||
2179 | pos = context->scheduled_head; | ||
2180 | while (NULL != pos) | ||
2181 | { | ||
2182 | struct Scheduled *next = pos->next; | ||
2183 | if (pos->task == task) | ||
2184 | { | ||
2185 | GNUNET_CONTAINER_DLL_remove (context->scheduled_head, | ||
2186 | context->scheduled_tail, | ||
2187 | pos); | ||
2188 | GNUNET_free (pos); | ||
2189 | ret = GNUNET_OK; | ||
2190 | } | ||
2191 | pos = next; | ||
2192 | } | ||
2193 | return ret; | ||
2194 | } | ||
2195 | |||
2196 | |||
2197 | int | ||
2198 | select_loop (void *cls, | ||
2199 | struct GNUNET_SCHEDULER_Handle *sh) | ||
2200 | { | ||
2201 | struct GNUNET_NETWORK_FDSet *rs; | ||
2202 | struct GNUNET_NETWORK_FDSet *ws; | ||
2203 | struct DriverContext *context; | ||
2204 | int select_result; | ||
2205 | int tasks_ready; | ||
2206 | |||
2207 | context = cls; | ||
2208 | GNUNET_assert (NULL != context); | ||
2209 | rs = GNUNET_NETWORK_fdset_create (); | ||
2210 | ws = GNUNET_NETWORK_fdset_create (); | ||
2211 | tasks_ready = GNUNET_NO; | ||
2212 | while (NULL != context->scheduled_head || | ||
2213 | GNUNET_TIME_UNIT_FOREVER_REL.rel_value_us != context->timeout.rel_value_us) | ||
2214 | { | ||
2215 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
2216 | "select timeout = %s\n", | ||
2217 | GNUNET_STRINGS_relative_time_to_string (context->timeout, GNUNET_NO)); | ||
2218 | |||
2219 | GNUNET_NETWORK_fdset_zero (rs); | ||
2220 | GNUNET_NETWORK_fdset_zero (ws); | ||
2221 | struct Scheduled *pos; | ||
2222 | for (pos = context->scheduled_head; NULL != pos; pos = pos->next) | ||
2223 | { | ||
2224 | if (0 != (GNUNET_SCHEDULER_ET_IN & pos->et)) | ||
2225 | { | ||
2226 | GNUNET_NETWORK_fdset_set_native (rs, pos->fdi->sock); | ||
2227 | } | ||
2228 | if (0 != (GNUNET_SCHEDULER_ET_OUT & pos->et)) | ||
2229 | { | ||
2230 | GNUNET_NETWORK_fdset_set_native (ws, pos->fdi->sock); | ||
2231 | } | ||
2232 | } | ||
2233 | if (NULL == scheduler_select) | ||
2234 | { | ||
2235 | select_result = GNUNET_NETWORK_socket_select (rs, | ||
2236 | ws, | ||
2237 | NULL, | ||
2238 | context->timeout); | ||
2239 | } | ||
2240 | else | ||
2241 | { | ||
2242 | select_result = scheduler_select (scheduler_select_cls, | ||
2243 | rs, | ||
2244 | ws, | ||
2245 | NULL, | ||
2246 | context->timeout); | ||
2247 | } | ||
2248 | if (select_result == GNUNET_SYSERR) | ||
2249 | { | ||
2250 | if (errno == EINTR) | ||
2251 | continue; | ||
2252 | |||
2253 | LOG_STRERROR (GNUNET_ERROR_TYPE_ERROR, "select"); | ||
2254 | #ifndef MINGW | ||
2255 | #if USE_LSOF | ||
2256 | char lsof[512]; | ||
2257 | |||
2258 | snprintf (lsof, sizeof (lsof), "lsof -p %d", getpid ()); | ||
2259 | (void) close (1); | ||
2260 | (void) dup2 (2, 1); | ||
2261 | if (0 != system (lsof)) | ||
2262 | LOG_STRERROR (GNUNET_ERROR_TYPE_WARNING, | ||
2263 | "system"); | ||
2264 | #endif | ||
2265 | #endif | ||
2266 | #if DEBUG_FDS | ||
2267 | struct Scheduled *s; | ||
2268 | for (s = context->scheduled_head; NULL != s; s = s->next) | ||
2269 | { | ||
2270 | int flags = fcntl (s->fdi->sock, F_GETFD); | ||
2271 | if ((flags == -1) && (errno == EBADF)) | ||
2272 | { | ||
2273 | LOG (GNUNET_ERROR_TYPE_ERROR, | ||
2274 | "Got invalid file descriptor %d!\n", | ||
2275 | s->fdi->sock); | ||
2276 | } | ||
2277 | } | ||
2278 | #endif | ||
2279 | GNUNET_assert (0); | ||
2280 | GNUNET_NETWORK_fdset_destroy (rs); | ||
2281 | GNUNET_NETWORK_fdset_destroy (ws); | ||
2282 | return GNUNET_SYSERR; | ||
2283 | } | ||
2284 | for (pos = context->scheduled_head; NULL != pos; pos = pos->next) | ||
2285 | { | ||
2286 | int is_ready = GNUNET_NO; | ||
2287 | if (0 != (GNUNET_SCHEDULER_ET_IN & pos->et) && | ||
2288 | GNUNET_YES == GNUNET_NETWORK_fdset_test_native (rs, pos->fdi->sock)) | ||
2289 | { | ||
2290 | pos->fdi->et |= GNUNET_SCHEDULER_ET_IN; | ||
2291 | is_ready = GNUNET_YES; | ||
2292 | } | ||
2293 | if (0 != (GNUNET_SCHEDULER_ET_OUT & pos->et) && | ||
2294 | GNUNET_YES == GNUNET_NETWORK_fdset_test_native (ws, pos->fdi->sock)) | ||
2295 | { | ||
2296 | pos->fdi->et |= GNUNET_SCHEDULER_ET_OUT; | ||
2297 | is_ready = GNUNET_YES; | ||
2298 | } | ||
2299 | if (GNUNET_YES == is_ready) | ||
2300 | { | ||
2301 | GNUNET_SCHEDULER_task_ready (pos->task, pos->fdi); | ||
2302 | } | ||
2303 | } | ||
2304 | tasks_ready = GNUNET_SCHEDULER_run_from_driver (sh); | ||
2305 | GNUNET_assert (GNUNET_SYSERR != tasks_ready); | ||
2306 | } | ||
2307 | GNUNET_NETWORK_fdset_destroy (rs); | ||
2308 | GNUNET_NETWORK_fdset_destroy (ws); | ||
2309 | return GNUNET_OK; | ||
2310 | } | ||
2311 | |||
2312 | |||
2313 | void | ||
2314 | select_set_wakeup(void *cls, | ||
2315 | struct GNUNET_TIME_Absolute dt) | ||
2316 | { | ||
2317 | struct DriverContext *context = cls; | ||
2318 | GNUNET_assert (NULL != context); | ||
2319 | |||
2320 | context->timeout = GNUNET_TIME_absolute_get_remaining (dt); | ||
2321 | } | ||
2322 | |||
2323 | |||
2080 | /** | 2324 | /** |
2081 | * Obtain the driver for using select() as the event loop. | 2325 | * Obtain the driver for using select() as the event loop. |
2082 | * | 2326 | * |
2083 | * @return NULL on error | 2327 | * @return NULL on error |
2084 | */ | 2328 | */ |
2085 | const struct GNUNET_SCHEDULER_Driver * | 2329 | struct GNUNET_SCHEDULER_Driver * |
2086 | GNUNET_SCHEDULER_driver_select () | 2330 | GNUNET_SCHEDULER_driver_select () |
2087 | { | 2331 | { |
2088 | GNUNET_break (0); // not implemented | 2332 | struct GNUNET_SCHEDULER_Driver *select_driver; |
2089 | return NULL; | 2333 | select_driver = GNUNET_new (struct GNUNET_SCHEDULER_Driver); |
2334 | |||
2335 | select_driver->loop = &select_loop; | ||
2336 | select_driver->add = &select_add; | ||
2337 | select_driver->del = &select_del; | ||
2338 | select_driver->set_wakeup = &select_set_wakeup; | ||
2339 | |||
2340 | return select_driver; | ||
2090 | } | 2341 | } |
2091 | 2342 | ||
2092 | 2343 | ||
diff --git a/src/util/service.c b/src/util/service.c index fcdf45a51..b4eb33caa 100644 --- a/src/util/service.c +++ b/src/util/service.c | |||
@@ -1932,6 +1932,11 @@ do_send (void *cls) | |||
1932 | size_t left; | 1932 | size_t left; |
1933 | const char *buf; | 1933 | const char *buf; |
1934 | 1934 | ||
1935 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
1936 | "service: sending message with type %u", | ||
1937 | ntohs(client->msg->type)); | ||
1938 | |||
1939 | |||
1935 | client->send_task = NULL; | 1940 | client->send_task = NULL; |
1936 | buf = (const char *) client->msg; | 1941 | buf = (const char *) client->msg; |
1937 | left = ntohs (client->msg->size) - client->msg_pos; | 1942 | left = ntohs (client->msg->size) - client->msg_pos; |
@@ -1941,6 +1946,8 @@ do_send (void *cls) | |||
1941 | GNUNET_assert (ret <= (ssize_t) left); | 1946 | GNUNET_assert (ret <= (ssize_t) left); |
1942 | if (0 == ret) | 1947 | if (0 == ret) |
1943 | { | 1948 | { |
1949 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
1950 | "no data send"); | ||
1944 | GNUNET_MQ_inject_error (client->mq, | 1951 | GNUNET_MQ_inject_error (client->mq, |
1945 | GNUNET_MQ_ERROR_WRITE); | 1952 | GNUNET_MQ_ERROR_WRITE); |
1946 | return; | 1953 | return; |
@@ -1958,6 +1965,9 @@ do_send (void *cls) | |||
1958 | if (EPIPE != errno) | 1965 | if (EPIPE != errno) |
1959 | GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, | 1966 | GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, |
1960 | "send"); | 1967 | "send"); |
1968 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
1969 | "socket send returned with error code %i", | ||
1970 | errno); | ||
1961 | GNUNET_MQ_inject_error (client->mq, | 1971 | GNUNET_MQ_inject_error (client->mq, |
1962 | GNUNET_MQ_ERROR_WRITE); | 1972 | GNUNET_MQ_ERROR_WRITE); |
1963 | return; | 1973 | return; |
@@ -2402,7 +2412,7 @@ resume_client_receive (void *cls) | |||
2402 | GNUNET_YES); | 2412 | GNUNET_YES); |
2403 | if (GNUNET_SYSERR == ret) | 2413 | if (GNUNET_SYSERR == ret) |
2404 | { | 2414 | { |
2405 | if (NULL != c->drop_task) | 2415 | if (NULL == c->drop_task) |
2406 | GNUNET_SERVICE_client_drop (c); | 2416 | GNUNET_SERVICE_client_drop (c); |
2407 | return; | 2417 | return; |
2408 | } | 2418 | } |
@@ -2431,6 +2441,7 @@ resume_client_receive (void *cls) | |||
2431 | void | 2441 | void |
2432 | GNUNET_SERVICE_client_continue (struct GNUNET_SERVICE_Client *c) | 2442 | GNUNET_SERVICE_client_continue (struct GNUNET_SERVICE_Client *c) |
2433 | { | 2443 | { |
2444 | GNUNET_assert (NULL == c->drop_task); | ||
2434 | GNUNET_assert (GNUNET_YES == c->needs_continue); | 2445 | GNUNET_assert (GNUNET_YES == c->needs_continue); |
2435 | GNUNET_assert (NULL == c->recv_task); | 2446 | GNUNET_assert (NULL == c->recv_task); |
2436 | c->needs_continue = GNUNET_NO; | 2447 | c->needs_continue = GNUNET_NO; |
@@ -2513,6 +2524,24 @@ GNUNET_SERVICE_client_drop (struct GNUNET_SERVICE_Client *c) | |||
2513 | { | 2524 | { |
2514 | struct GNUNET_SERVICE_Handle *sh = c->sh; | 2525 | struct GNUNET_SERVICE_Handle *sh = c->sh; |
2515 | 2526 | ||
2527 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
2528 | "Client dropped: %p (MQ: %p)\n", | ||
2529 | c, | ||
2530 | c->mq); | ||
2531 | |||
2532 | #if EXECINFO | ||
2533 | void *backtrace_array[MAX_TRACE_DEPTH]; | ||
2534 | int num_backtrace_strings = backtrace (backtrace_array, MAX_TRACE_DEPTH); | ||
2535 | char **backtrace_strings = | ||
2536 | backtrace_symbols (backtrace_array, | ||
2537 | t->num_backtrace_strings); | ||
2538 | for (unsigned int i = 0; i < num_backtrace_strings; i++) | ||
2539 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
2540 | "client drop trace %u: %s\n", | ||
2541 | i, | ||
2542 | backtrace_strings[i]); | ||
2543 | #endif | ||
2544 | |||
2516 | if (NULL != c->drop_task) | 2545 | if (NULL != c->drop_task) |
2517 | { | 2546 | { |
2518 | /* asked to drop twice! */ | 2547 | /* asked to drop twice! */ |
diff --git a/src/util/time.c b/src/util/time.c index 19100ac36..5ffb19ec1 100644 --- a/src/util/time.c +++ b/src/util/time.c | |||
@@ -693,7 +693,7 @@ GNUNET_TIME_year_to_time (unsigned int year) | |||
693 | } | 693 | } |
694 | t.tm_year = year - 1900; | 694 | t.tm_year = year - 1900; |
695 | t.tm_mday = 1; | 695 | t.tm_mday = 1; |
696 | t.tm_mon = 1; | 696 | t.tm_mon = 0; |
697 | t.tm_wday = 1; | 697 | t.tm_wday = 1; |
698 | t.tm_yday = 1; | 698 | t.tm_yday = 1; |
699 | tp = mktime (&t); | 699 | tp = mktime (&t); |
diff --git a/src/vpn/gnunet-service-vpn.c b/src/vpn/gnunet-service-vpn.c index d9daaa7e2..bdc638176 100644 --- a/src/vpn/gnunet-service-vpn.c +++ b/src/vpn/gnunet-service-vpn.c | |||
@@ -2218,6 +2218,9 @@ route_packet (struct DestinationEntry *destination, | |||
2218 | * | 2218 | * |
2219 | * @param cls closure, NULL | 2219 | * @param cls closure, NULL |
2220 | * @param message message we got from the client (VPN channel interface) | 2220 | * @param message message we got from the client (VPN channel interface) |
2221 | * @return #GNUNET_OK on success, | ||
2222 | * #GNUNET_NO to stop further processing (no error) | ||
2223 | * #GNUNET_SYSERR to stop further processing with error | ||
2221 | */ | 2224 | */ |
2222 | static int | 2225 | static int |
2223 | message_token (void *cls, | 2226 | message_token (void *cls, |