aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHernani Marques <hernani@ccc-ch.ch>2018-06-26 22:40:30 +0200
committerHernani Marques <hernani@ccc-ch.ch>2018-06-26 22:40:30 +0200
commitd27f60b94b3a062877da25cdf7a6b93c4c9cda5a (patch)
tree50bc609bae0a204c4e6f77ad10b47b60eb646afa
parent3bb2a26da20d649189acf255faf685f2f3ac79d6 (diff)
downloadgnunet-d27f60b94b3a062877da25cdf7a6b93c4c9cda5a.tar.gz
gnunet-d27f60b94b3a062877da25cdf7a6b93c4c9cda5a.zip
doc: typos
-rw-r--r--doc/documentation/chapters/developer.texi174
1 files changed, 87 insertions, 87 deletions
diff --git a/doc/documentation/chapters/developer.texi b/doc/documentation/chapters/developer.texi
index 22b175a3f..f6dd10c7f 100644
--- a/doc/documentation/chapters/developer.texi
+++ b/doc/documentation/chapters/developer.texi
@@ -352,7 +352,7 @@ The DHT and other components of GNUnet
352store information in units called 'blocks'. Each block has a type and the 352store information in units called 'blocks'. Each block has a type and the
353type defines a particular format and how that binary format is to be 353type defines a particular format and how that binary format is to be
354linked to a hash code (the key for the DHT and for databases). The block 354linked to a hash code (the key for the DHT and for databases). The block
355library is a wapper around block plugins which provide the necessary 355library is a wrapper around block plugins which provide the necessary
356functions for each block type. 356functions for each block type.
357@item @file{statistics/} --- statistics service 357@item @file{statistics/} --- statistics service
358The statistics service enables associating 358The statistics service enables associating
@@ -400,7 +400,7 @@ external service to test the local configuration.
400Some transports (UDP and WLAN, mostly) have restrictions on the maximum 400Some transports (UDP and WLAN, mostly) have restrictions on the maximum
401transfer unit (MTU) for packets. The fragmentation library can be used to 401transfer unit (MTU) for packets. The fragmentation library can be used to
402break larger packets into chunks of at most 1k and transmit the resulting 402break larger packets into chunks of at most 1k and transmit the resulting
403fragments reliabily (with acknowledgement, retransmission, timeouts, 403fragments reliably (with acknowledgment, retransmission, timeouts,
404etc.). 404etc.).
405@item @file{transport/} --- transport service 405@item @file{transport/} --- transport service
406The transport service is responsible for managing the 406The transport service is responsible for managing the
@@ -425,8 +425,8 @@ the foundation for the testbed service
425@item @file{testbed/} --- testbed service 425@item @file{testbed/} --- testbed service
426The testbed service is used for creating small or large scale deployments 426The testbed service is used for creating small or large scale deployments
427of GNUnet peers for evaluation of protocols. 427of GNUnet peers for evaluation of protocols.
428It facilitates peer depolyments on multiple 428It facilitates peer deployments on multiple
429hosts (for example, in a cluster) and establishing varous network 429hosts (for example, in a cluster) and establishing various network
430topologies (both underlay and overlay). 430topologies (both underlay and overlay).
431@item @file{nse/} --- Network Size Estimation 431@item @file{nse/} --- Network Size Estimation
432The network size estimation (NSE) service 432The network size estimation (NSE) service
@@ -1038,7 +1038,7 @@ if (0 == bar && x != y)
1038@end example 1038@end example
1039 1039
1040@noindent 1040@noindent
1041Note that splitting the @code{if} statement above is debateable as the 1041Note that splitting the @code{if} statement above is debatable as the
1042@code{return x} is a very trivial statement. However, once the logic after 1042@code{return x} is a very trivial statement. However, once the logic after
1043the branch becomes more complicated (and is still identical), the "or" 1043the branch becomes more complicated (and is still identical), the "or"
1044formulation should be used for sure. 1044formulation should be used for sure.
@@ -1173,12 +1173,12 @@ for building applications under UNIX-like systems. Furthermore we
1173assume that the build environment is sane and that you are aware of 1173assume that the build environment is sane and that you are aware of
1174any implications actions in this process could have. 1174any implications actions in this process could have.
1175Instructions here can be seen as notes for developers (an extension to 1175Instructions here can be seen as notes for developers (an extension to
1176the 'HACKING' section in README) as well as package mantainers. 1176the 'HACKING' section in README) as well as package maintainers.
1177@b{Users should rely on the available binary packages.} 1177@b{Users should rely on the available binary packages.}
1178We will use Debian as an example Operating System environment. Substitute 1178We will use Debian as an example Operating System environment. Substitute
1179accordingly with your own Ooperating System environment. 1179accordingly with your own Operating System environment.
1180 1180
1181For the full list of depenendencies, consult the appropriate, up-to-date 1181For the full list of dependencies, consult the appropriate, up-to-date
1182section in the @file{README} file. 1182section in the @file{README} file.
1183 1183
1184First, we need to build or install (depending on your OS) the following 1184First, we need to build or install (depending on your OS) the following
@@ -1442,7 +1442,7 @@ $ gnunet-gns-proxy-setup-ca
1442@end example 1442@end example
1443 1443
1444@noindent 1444@noindent
1445The first generates the default zones, wheras the second setups the GNS 1445The first generates the default zones, whereas the second setups the GNS
1446Certificate Authority with the user's browser. Now, to activate GNS in the 1446Certificate Authority with the user's browser. Now, to activate GNS in the
1447normal DNS resolution process, you need to edit your 1447normal DNS resolution process, you need to edit your
1448@file{/etc/nsswitch.conf} where you should find a line like this: 1448@file{/etc/nsswitch.conf} where you should find a line like this:
@@ -1536,7 +1536,7 @@ This range can be customised with the function
1536similar to @code{GNUNET_TESTING_system_create()} except that it take 2 1536similar to @code{GNUNET_TESTING_system_create()} except that it take 2
1537additional parameters --- the start and end of the port range to use. 1537additional parameters --- the start and end of the port range to use.
1538 1538
1539A TESTING system is destroyed with the funciton 1539A TESTING system is destroyed with the function
1540@code{GNUNET_TESTING_system_destory()}. This function takes the handle of 1540@code{GNUNET_TESTING_system_destory()}. This function takes the handle of
1541the system and a flag to remove the files created in the directory used 1541the system and a flag to remove the files created in the directory used
1542to generate configurations. 1542to generate configurations.
@@ -1545,7 +1545,7 @@ A peer is created with the function
1545@code{GNUNET_TESTING_peer_configure()}. This functions takes the system 1545@code{GNUNET_TESTING_peer_configure()}. This functions takes the system
1546handle, a configuration template from which the configuration for the peer 1546handle, a configuration template from which the configuration for the peer
1547is auto-generated and the index from where the hostkey for the peer has to 1547is auto-generated and the index from where the hostkey for the peer has to
1548be copied from. When successfull, this function returs a handle to the 1548be copied from. When successful, this function returns a handle to the
1549peer which can be used to start and stop it and to obtain the identity of 1549peer which can be used to start and stop it and to obtain the identity of
1550the peer. If unsuccessful, a NULL pointer is returned with an error 1550the peer. If unsuccessful, a NULL pointer is returned with an error
1551message. This function handles the generated configuration to have 1551message. This function handles the generated configuration to have
@@ -1579,7 +1579,7 @@ to the handle to the peer to stop. The callback function is called with
1579the given closure when the peer is stopped. Using this function 1579the given closure when the peer is stopped. Using this function
1580eliminates blocking while waiting for the peer to terminate. 1580eliminates blocking while waiting for the peer to terminate.
1581 1581
1582An asynchronous peer stop can be cancelled by calling the function 1582An asynchronous peer stop can be canceled by calling the function
1583@code{GNUNET_TESTING_peer_stop_async_cancel()}. Note that calling this 1583@code{GNUNET_TESTING_peer_stop_async_cancel()}. Note that calling this
1584function does not prevent the peer from terminating if the termination 1584function does not prevent the peer from terminating if the termination
1585signal has already been sent to it. It does, however, cancels the 1585signal has already been sent to it. It does, however, cancels the
@@ -1660,12 +1660,12 @@ simply load the plugin directly.
1660To help avoid performance regressions, GNUnet uses Gauger. Gauger is a 1660To help avoid performance regressions, GNUnet uses Gauger. Gauger is a
1661simple logging tool that allows remote hosts to send performance data to 1661simple logging tool that allows remote hosts to send performance data to
1662a central server, where this data can be analyzed and visualized. Gauger 1662a central server, where this data can be analyzed and visualized. Gauger
1663shows graphs of the repository revisions and the performace data recorded 1663shows graphs of the repository revisions and the performance data recorded
1664for each revision, so sudden performance peaks or drops can be identified 1664for each revision, so sudden performance peaks or drops can be identified
1665and linked to a specific revision number. 1665and linked to a specific revision number.
1666 1666
1667In the case of GNUnet, the buildbots log the performance data obtained 1667In the case of GNUnet, the buildbots log the performance data obtained
1668during the tests after each build. The data can be accesed on GNUnet's 1668during the tests after each build. The data can be accessed on GNUnet's
1669Gauger page. 1669Gauger page.
1670 1670
1671The menu on the left allows to select either the results of just one 1671The menu on the left allows to select either the results of just one
@@ -1678,7 +1678,7 @@ performance evolution across all hosts.
1678Using Gauger in GNUnet and having the performance of a module tracked over 1678Using Gauger in GNUnet and having the performance of a module tracked over
1679time is very easy. First of course, the testcase must generate some 1679time is very easy. First of course, the testcase must generate some
1680consistent metric, which makes sense to have logged. Highly volatile or 1680consistent metric, which makes sense to have logged. Highly volatile or
1681random dependant metrics probably are not ideal candidates for meaningful 1681random dependent metrics probably are not ideal candidates for meaningful
1682regression detection. 1682regression detection.
1683 1683
1684To start logging any value, just include @code{gauger.h} in your testcase 1684To start logging any value, just include @code{gauger.h} in your testcase
@@ -1890,7 +1890,7 @@ random links are to be given
1890 1890
1891@item @code{GNUNET_TESTBED_TOPOLOGY_SCALE_FREE}: Connects peers in a 1891@item @code{GNUNET_TESTBED_TOPOLOGY_SCALE_FREE}: Connects peers in a
1892topology where peer connectivity follows power law - new peers are 1892topology where peer connectivity follows power law - new peers are
1893connected with high probabililty to well connected peers. 1893connected with high probability to well connected peers.
1894@footnote{See Emergence of Scaling in Random Networks. Science 286, 1894@footnote{See Emergence of Scaling in Random Networks. Science 286,
1895509-512, 1999 1895509-512, 1999
1896(@uref{https://gnunet.org/git/bibliography.git/plain/docs/emergence_of_scaling_in_random_networks__barabasi_albert_science_286__1999.pdf, pdf})} 1896(@uref{https://gnunet.org/git/bibliography.git/plain/docs/emergence_of_scaling_in_random_networks__barabasi_albert_science_286__1999.pdf, pdf})}
@@ -1931,7 +1931,7 @@ ignored for the rest of the topologies.
1931Topology @code{SCALE_FREE} requires the options 1931Topology @code{SCALE_FREE} requires the options
1932@code{SCALE_FREE_TOPOLOGY_CAP} to be set to the maximum number of peers 1932@code{SCALE_FREE_TOPOLOGY_CAP} to be set to the maximum number of peers
1933which can connect to a peer and @code{SCALE_FREE_TOPOLOGY_M} to be set to 1933which can connect to a peer and @code{SCALE_FREE_TOPOLOGY_M} to be set to
1934how many peers a peer should be atleast connected to. 1934how many peers a peer should be at least connected to.
1935 1935
1936Similarly, the topology @code{FROM_FILE} requires the option 1936Similarly, the topology @code{FROM_FILE} requires the option
1937@code{OVERLAY_TOPOLOGY_FILE} to contain the path of the file containing 1937@code{OVERLAY_TOPOLOGY_FILE} to contain the path of the file containing
@@ -1977,7 +1977,7 @@ A topology file describes how peers are to be connected. It should adhere
1977to the following format for testbed to parse it correctly. 1977to the following format for testbed to parse it correctly.
1978 1978
1979Each line should begin with the target peer id. This should be followed by 1979Each line should begin with the target peer id. This should be followed by
1980a colon(`:') and origin peer ids seperated by `|'. All spaces except for 1980a colon(`:') and origin peer ids separated by `|'. All spaces except for
1981newline characters are ignored. The API will then try to connect each 1981newline characters are ignored. The API will then try to connect each
1982origin peer to the target peer. 1982origin peer to the target peer.
1983 1983
@@ -2003,9 +2003,9 @@ deemed as crossed after all the peers waiting on it are notified.
2003The barriers API provides the following functions: 2003The barriers API provides the following functions:
2004@itemize @bullet 2004@itemize @bullet
2005@item @strong{@code{GNUNET_TESTBED_barrier_init()}:} function to 2005@item @strong{@code{GNUNET_TESTBED_barrier_init()}:} function to
2006initialse a barrier in the experiment 2006initialize a barrier in the experiment
2007@item @strong{@code{GNUNET_TESTBED_barrier_cancel()}:} function to cancel 2007@item @strong{@code{GNUNET_TESTBED_barrier_cancel()}:} function to cancel
2008a barrier which has been initialised before 2008a barrier which has been initialized before
2009@item @strong{@code{GNUNET_TESTBED_barrier_wait()}:} function to signal 2009@item @strong{@code{GNUNET_TESTBED_barrier_wait()}:} function to signal
2010barrier service that the caller has reached a barrier and is waiting for 2010barrier service that the caller has reached a barrier and is waiting for
2011it to be crossed 2011it to be crossed
@@ -2122,7 +2122,7 @@ the large-scale deployment. We provide you a set of scripts you can use
2122to deploy GNUnet on a set of nodes and manage your installation. 2122to deploy GNUnet on a set of nodes and manage your installation.
2123 2123
2124Please also check @uref{https://gnunet.org/installation-fedora8-svn} and 2124Please also check @uref{https://gnunet.org/installation-fedora8-svn} and
2125@uref{https://gnunet.org/installation-fedora12-svn} to find detailled 2125@uref{https://gnunet.org/installation-fedora12-svn} to find detailed
2126instructions how to install GNUnet on a PlanetLab node. 2126instructions how to install GNUnet on a PlanetLab node.
2127 2127
2128 2128
@@ -2148,7 +2148,7 @@ image, installing the buildslave software is quite some pain. For our
2148PlanetLab testbed we figured out how to install the buildslave software 2148PlanetLab testbed we figured out how to install the buildslave software
2149best. 2149best.
2150 2150
2151@c This is a vvery terrible way to suggest installing software. 2151@c This is a very terrible way to suggest installing software.
2152@c FIXME: Is there an official, safer way instead of blind-piping a 2152@c FIXME: Is there an official, safer way instead of blind-piping a
2153@c script? 2153@c script?
2154@c FIXME: Use newer pypi URLs below. 2154@c FIXME: Use newer pypi URLs below.
@@ -2354,7 +2354,7 @@ for new developers):
2354@item CPS-style scheduling (scheduler.c) 2354@item CPS-style scheduling (scheduler.c)
2355@item Program initialization (program.c) 2355@item Program initialization (program.c)
2356@item Networking (network.c, client.c, server*.c, service.c) 2356@item Networking (network.c, client.c, server*.c, service.c)
2357@item message queueing (mq.c) 2357@item message queuing (mq.c)
2358@item bandwidth calculations (bandwidth.c) 2358@item bandwidth calculations (bandwidth.c)
2359@item Other OS-related (os*.c, plugin.c, signal.c) 2359@item Other OS-related (os*.c, plugin.c, signal.c)
2360@item Pseudonym management (pseudonym.c) 2360@item Pseudonym management (pseudonym.c)
@@ -2425,7 +2425,7 @@ level to "loglevel". Thus it is possible to run some processes
2425with -L DEBUG, for example, and others with -L ERROR to enable specific 2425with -L DEBUG, for example, and others with -L ERROR to enable specific
2426settings to diagnose problems with a particular process. 2426settings to diagnose problems with a particular process.
2427@item Configuration files. Because GNUnet 2427@item Configuration files. Because GNUnet
2428service and deamon processes are usually launched by gnunet-arm, it is not 2428service and daemon processes are usually launched by gnunet-arm, it is not
2429possible to pass different custom command line options directly to every 2429possible to pass different custom command line options directly to every
2430one of them. The options passed to @code{gnunet-arm} only affect 2430one of them. The options passed to @code{gnunet-arm} only affect
2431gnunet-arm and not the rest of GNUnet. However, one can specify a 2431gnunet-arm and not the rest of GNUnet. However, one can specify a
@@ -2717,7 +2717,7 @@ will have
2717no effect. Other messages (ERROR, WARNING, INFO, etc) will be included. 2717no effect. Other messages (ERROR, WARNING, INFO, etc) will be included.
2718@item If @code{--enable-logging} is set to @code{verbose}, or 2718@item If @code{--enable-logging} is set to @code{verbose}, or
2719@code{veryverbose} the binary will contain DEBUG messages (still, it will 2719@code{veryverbose} the binary will contain DEBUG messages (still, it will
2720be neccessary to run with @command{-L DEBUG} or set the DEBUG config option 2720be necessary to run with @command{-L DEBUG} or set the DEBUG config option
2721to show 2721to show
2722them). 2722them).
2723@end itemize 2723@end itemize
@@ -2728,7 +2728,7 @@ If you are a developer:
2728@item please make sure that you @code{./configure 2728@item please make sure that you @code{./configure
2729--enable-logging=@{verbose,veryverbose@}}, so you can see DEBUG messages. 2729--enable-logging=@{verbose,veryverbose@}}, so you can see DEBUG messages.
2730@item please remove the @code{#if} statements around @code{GNUNET_log 2730@item please remove the @code{#if} statements around @code{GNUNET_log
2731(GNUNET_ERROR_TYPE_DEBUG, ...)} lines, to improve the readibility of your 2731(GNUNET_ERROR_TYPE_DEBUG, ...)} lines, to improve the readability of your
2732code. 2732code.
2733@end itemize 2733@end itemize
2734 2734
@@ -2741,7 +2741,7 @@ A suitable configuration could be:
2741$ export GNUNET_FORCE_LOG="^YOUR_SUBSYSTEM$;;;;DEBUG/;;;;WARNING" 2741$ export GNUNET_FORCE_LOG="^YOUR_SUBSYSTEM$;;;;DEBUG/;;;;WARNING"
2742@end example 2742@end example
2743 2743
2744Which will behave almost like enabling DEBUG in that subsytem before the 2744Which will behave almost like enabling DEBUG in that subsystem before the
2745change. Of course you can adapt it to your particular needs, this is only 2745change. Of course you can adapt it to your particular needs, this is only
2746a quick example. 2746a quick example.
2747 2747
@@ -2952,7 +2952,7 @@ function, which is set to @code{NULL} in most cases, and the last
2952parameter is the expected size of the message of this type, usually we 2952parameter is the expected size of the message of this type, usually we
2953set it to 0 to accept variable size, for special cases the exact size of 2953set it to 0 to accept variable size, for special cases the exact size of
2954the specified message also can be set. In addition, the terminator sign 2954the specified message also can be set. In addition, the terminator sign
2955depicted as @code{@{NULL, NULL, 0, 0@}} is set in the last aera. 2955depicted as @code{@{NULL, NULL, 0, 0@}} is set in the last area.
2956 2956
2957@c *********************************************************************** 2957@c ***********************************************************************
2958@node Server - Process request message 2958@node Server - Process request message
@@ -3002,7 +3002,7 @@ understand the request message, and the processing of this request would
3002be terminated. 3002be terminated.
3003 3003
3004In comparison to the aforementioned situation, when the argument is equal 3004In comparison to the aforementioned situation, when the argument is equal
3005to @code{GNUNET_OK}, the service would continue to process the requst 3005to @code{GNUNET_OK}, the service would continue to process the request
3006message. 3006message.
3007 3007
3008@c *********************************************************************** 3008@c ***********************************************************************
@@ -3151,7 +3151,7 @@ GNUnet uses SHA-512 for computing one-way hash codes. The API provides
3151functions to compute a hash over a block in memory or over a file on disk. 3151functions to compute a hash over a block in memory or over a file on disk.
3152 3152
3153The crypto API also provides functions for randomizing a block of memory, 3153The crypto API also provides functions for randomizing a block of memory,
3154obtaining a single random number and for generating a permuation of the 3154obtaining a single random number and for generating a permutation of the
3155numbers 0 to n-1. Random number generation distinguishes between WEAK and 3155numbers 0 to n-1. Random number generation distinguishes between WEAK and
3156STRONG random number quality; WEAK random numbers are pseudo-random 3156STRONG random number quality; WEAK random numbers are pseudo-random
3157whereas STRONG random numbers use entropy gathered from the operating 3157whereas STRONG random numbers use entropy gathered from the operating
@@ -3230,7 +3230,7 @@ message.
3230 3230
3231Consider the following simple message, with the body consisting of a 3231Consider the following simple message, with the body consisting of a
3232single number value. 3232single number value.
3233@c why the empy code function? 3233@c why the empty code function?
3234@code{} 3234@code{}
3235 3235
3236@example 3236@example
@@ -3505,7 +3505,7 @@ or in some other transient data structure and thus having the hash map
3505keep a pointer to @code{key} would not work. Only the key inside of 3505keep a pointer to @code{key} would not work. Only the key inside of
3506@code{val} has the same lifetime as the entry in the map (this must of 3506@code{val} has the same lifetime as the entry in the map (this must of
3507course be checked as well). Naturally, @code{val->key} must be 3507course be checked as well). Naturally, @code{val->key} must be
3508intiialized before the @code{put} call. Once all @code{put} calls have 3508initialized before the @code{put} call. Once all @code{put} calls have
3509been converted and double-checked, you can change the call to create the 3509been converted and double-checked, you can change the call to create the
3510hash map from 3510hash map from
3511 3511
@@ -3893,7 +3893,7 @@ The goal of transport-level address validation is to minimize the chances
3893of a successful man-in-the-middle attack against GNUnet peers on the 3893of a successful man-in-the-middle attack against GNUnet peers on the
3894transport level. Such an attack would not allow the adversary to decrypt 3894transport level. Such an attack would not allow the adversary to decrypt
3895the P2P transmissions, but a successful attacker could at least measure 3895the P2P transmissions, but a successful attacker could at least measure
3896traffic volumes and latencies (raising the adversaries capablities by 3896traffic volumes and latencies (raising the adversaries capabilities by
3897those of a global passive adversary in the worst case). The scenarios we 3897those of a global passive adversary in the worst case). The scenarios we
3898are concerned about is an attacker, Mallory, giving a @code{HELLO} to 3898are concerned about is an attacker, Mallory, giving a @code{HELLO} to
3899Alice that claims to be for Bob, but contains Mallory's IP address 3899Alice that claims to be for Bob, but contains Mallory's IP address
@@ -4019,7 +4019,7 @@ connected peers, but they are sent about other knowns peers within the
4019to each other about their appropriate other neighbors. They also gossip 4019to each other about their appropriate other neighbors. They also gossip
4020about the newly connected peer to previously 4020about the newly connected peer to previously
4021connected neighbors. In order to keep the routing tables up to date, 4021connected neighbors. In order to keep the routing tables up to date,
4022disconnect notifications are propogated as gossip as well (because 4022disconnect notifications are propagated as gossip as well (because
4023disconnects may not be sent/received, timeouts are also used remove 4023disconnects may not be sent/received, timeouts are also used remove
4024stagnant routing table entries). 4024stagnant routing table entries).
4025 4025
@@ -4210,7 +4210,7 @@ to send and receive messages.
4210 4210
4211We have measured the performance of the UDP, TCP and SMTP transport layer 4211We have measured the performance of the UDP, TCP and SMTP transport layer
4212directly and when used from an application using the GNUnet core. 4212directly and when used from an application using the GNUnet core.
4213Measureing just the transport layer gives the better view of the actual 4213Measuring just the transport layer gives the better view of the actual
4214overhead of the protocol, whereas evaluating the transport from the 4214overhead of the protocol, whereas evaluating the transport from the
4215application puts the overhead into perspective from a practical point of 4215application puts the overhead into perspective from a practical point of
4216view. 4216view.
@@ -4230,7 +4230,7 @@ wire have no impact on the timings. n messages were sent sequentially over
4230the transport layer, sending message i+1 after the i-th message was 4230the transport layer, sending message i+1 after the i-th message was
4231received. All messages were sent over the same connection and the time to 4231received. All messages were sent over the same connection and the time to
4232establish the connection was not taken into account since this overhead is 4232establish the connection was not taken into account since this overhead is
4233miniscule in practice --- as long as a connection is used for a 4233minuscule in practice --- as long as a connection is used for a
4234significant number of messages. 4234significant number of messages.
4235 4235
4236@multitable @columnfractions .20 .15 .15 .15 .15 .15 4236@multitable @columnfractions .20 .15 .15 .15 .15 .15
@@ -4261,9 +4261,9 @@ given time-bounds. For this benchmark we report the message loss after
4261allowing t time for sending m messages. If messages were not sent (or 4261allowing t time for sending m messages. If messages were not sent (or
4262received) after an overall timeout of t, they were considered lost. The 4262received) after an overall timeout of t, they were considered lost. The
4263benchmark was performed using two Xeon 2 GHZ machines running RedHat 8.0 4263benchmark was performed using two Xeon 2 GHZ machines running RedHat 8.0
4264with sendmail. The machines were connected with a direct 100 MBit ethernet 4264with sendmail. The machines were connected with a direct 100 MBit Ethernet
4265connection.@ Figures udp1200, tcp1200 and smtp-MTUs show that the 4265connection.@ Figures udp1200, tcp1200 and smtp-MTUs show that the
4266throughput for messages of size 1,200 octects is 2,343 kbps, 3,310 kbps 4266throughput for messages of size 1,200 octets is 2,343 kbps, 3,310 kbps
4267and 6 kbps for UDP, TCP and SMTP respectively. The high per-message 4267and 6 kbps for UDP, TCP and SMTP respectively. The high per-message
4268overhead of SMTP can be improved by increasing the MTU, for example, an 4268overhead of SMTP can be improved by increasing the MTU, for example, an
4269MTU of 12,000 octets improves the throughput to 13 kbps as figure 4269MTU of 12,000 octets improves the throughput to 13 kbps as figure
@@ -4308,7 +4308,7 @@ installed).
4308For instructions about how to install the libraries you should 4308For instructions about how to install the libraries you should
4309check out the BlueZ site 4309check out the BlueZ site
4310(@uref{http://www.bluez.org/, http://www.bluez.org}). If you don't know if 4310(@uref{http://www.bluez.org/, http://www.bluez.org}). If you don't know if
4311you have the necesarry libraries, don't worry, just run the GNUnet 4311you have the necessary libraries, don't worry, just run the GNUnet
4312configure script and you will be able to see a notification at the end 4312configure script and you will be able to see a notification at the end
4313which will warn you if you don't have the necessary libraries. 4313which will warn you if you don't have the necessary libraries.
4314 4314
@@ -4336,7 +4336,7 @@ helper binary used on GNU/Linux:
4336 4336
4337@itemize @bullet 4337@itemize @bullet
4338@item it verifies if the name corresponds to a Bluetooth interface name 4338@item it verifies if the name corresponds to a Bluetooth interface name
4339@item it verifies if the iterface is up (if it is not, it tries to bring 4339@item it verifies if the interface is up (if it is not, it tries to bring
4340it up) 4340it up)
4341@item it tries to enable the page and inquiry scan in order to make the 4341@item it tries to enable the page and inquiry scan in order to make the
4342device discoverable and to accept incoming connection requests 4342device discoverable and to accept incoming connection requests
@@ -4377,7 +4377,7 @@ Bluetooth address has the form 00:00:00:00:00:00 it means that there is
4377something wrong with the D-Bus daemon or with the Bluetooth daemon. Use 4377something wrong with the D-Bus daemon or with the Bluetooth daemon. Use
4378@code{bluetoothd} tool to see the logs 4378@code{bluetoothd} tool to see the logs
4379 4379
4380@item @code{sdptool} can be used to control and interogate SDP servers. 4380@item @code{sdptool} can be used to control and interrogate SDP servers.
4381If you encounter problems regarding the SDP server (like the SDP server is 4381If you encounter problems regarding the SDP server (like the SDP server is
4382down) you should check out if the D-Bus daemon is running correctly and to 4382down) you should check out if the D-Bus daemon is running correctly and to
4383see if the Bluetooth daemon started correctly(use @code{bluetoothd} tool). 4383see if the Bluetooth daemon started correctly(use @code{bluetoothd} tool).
@@ -4464,11 +4464,11 @@ then start sending data for benchmarking.
4464On Windows you cannot test the plugin functionality using two Bluetooth 4464On Windows you cannot test the plugin functionality using two Bluetooth
4465devices from the same machine because after you install the drivers there 4465devices from the same machine because after you install the drivers there
4466will occur some conflicts between the Bluetooth stacks. (At least that is 4466will occur some conflicts between the Bluetooth stacks. (At least that is
4467what happend on my machine : I wasn't able to use the Bluesoleil stack and 4467what happened on my machine : I wasn't able to use the Bluesoleil stack and
4468the WINDCOMM one in the same time). 4468the WINDCOMM one in the same time).
4469 4469
4470If you have two different machines and your configuration files are good 4470If you have two different machines and your configuration files are good
4471you can use the same scenario presented on the begining of this section. 4471you can use the same scenario presented on the beginning of this section.
4472 4472
4473Another way to test the plugin functionality is to create your own 4473Another way to test the plugin functionality is to create your own
4474application which will use the GNUnet framework with the Bluetooth 4474application which will use the GNUnet framework with the Bluetooth
@@ -4483,8 +4483,8 @@ This page describes the implementation of the Bluetooth transport plugin.
4483First I want to remind you that the Bluetooth transport plugin uses 4483First I want to remind you that the Bluetooth transport plugin uses
4484virtually the same code as the WLAN plugin and only the helper binary is 4484virtually the same code as the WLAN plugin and only the helper binary is
4485different. Also the scope of the helper binary from the Bluetooth 4485different. Also the scope of the helper binary from the Bluetooth
4486transport plugin is the same as the one used for the wlan transport 4486transport plugin is the same as the one used for the WLAN transport
4487plugin: it acceses the interface and then it forwards traffic in both 4487plugin: it accesses the interface and then it forwards traffic in both
4488directions between the Bluetooth interface and stdin/stdout of the 4488directions between the Bluetooth interface and stdin/stdout of the
4489process involved. 4489process involved.
4490 4490
@@ -4525,8 +4525,8 @@ Bluetooth interface) and is separated in two stages:
4525@subsubsection THE INITIALIZATION 4525@subsubsection THE INITIALIZATION
4526 4526
4527@itemize @bullet 4527@itemize @bullet
4528@item first, it checks if we have root privilegies 4528@item first, it checks if we have root privileges
4529(@emph{Remember that we need to have root privilegies in order to be able 4529(@emph{Remember that we need to have root privileges in order to be able
4530to bring the interface up if it is down or to change its state.}). 4530to bring the interface up if it is down or to change its state.}).
4531 4531
4532@item second, it verifies if the interface with the given name exists. 4532@item second, it verifies if the interface with the given name exists.
@@ -4551,7 +4551,7 @@ discoverable
4551devices to get the port on which this device is listening on) 4551devices to get the port on which this device is listening on)
4552@end itemize 4552@end itemize
4553 4553
4554@item drops the root privilegies 4554@item drops the root privileges
4555 4555
4556@strong{If the interface is not a Bluetooth interface the helper exits 4556@strong{If the interface is not a Bluetooth interface the helper exits
4557with a suitable error} 4557with a suitable error}
@@ -4596,7 +4596,7 @@ the STDOUT file descriptor, then we write to STDOUT the message from the
4596@emph{write_std} buffer. 4596@emph{write_std} buffer.
4597 4597
4598To find out on which port a device is listening on we connect to the local 4598To find out on which port a device is listening on we connect to the local
4599SDP server and searche the registered service for that device. 4599SDP server and search the registered service for that device.
4600 4600
4601@emph{You should be aware of the fact that if the device fails to connect 4601@emph{You should be aware of the fact that if the device fails to connect
4602to another one when trying to send a message it will attempt one more 4602to another one when trying to send a message it will attempt one more
@@ -4659,17 +4659,17 @@ For Windows I decided to use the Microsoft Bluetooth stack which has the
4659advantage of coming standard from Windows XP SP2. The main disadvantage is 4659advantage of coming standard from Windows XP SP2. The main disadvantage is
4660that it only supports the RFCOMM protocol so we will not be able to have 4660that it only supports the RFCOMM protocol so we will not be able to have
4661a low level control over the Bluetooth device. Therefore it is the user 4661a low level control over the Bluetooth device. Therefore it is the user
4662responsability to check if the device is up and in the discoverable mode. 4662responsibility to check if the device is up and in the discoverable mode.
4663Also there are no tools which could be used for debugging in order to read 4663Also there are no tools which could be used for debugging in order to read
4664the data coming from and going to a Bluetooth device, which obviously 4664the data coming from and going to a Bluetooth device, which obviously
4665hindered my work. Another thing that slowed down the implementation of the 4665hindered my work. Another thing that slowed down the implementation of the
4666plugin (besides that I wasn't too accomodated with the win32 API) was that 4666plugin (besides that I wasn't too accommodated with the win32 API) was that
4667there were some bugs on MinGW regarding the Bluetooth. Now they are solved 4667there were some bugs on MinGW regarding the Bluetooth. Now they are solved
4668but you should keep in mind that you should have the latest updates 4668but you should keep in mind that you should have the latest updates
4669(especially the @emph{ws2bth} header). 4669(especially the @emph{ws2bth} header).
4670 4670
4671Besides the fact that it uses the Windows Sockets, the Windows 4671Besides the fact that it uses the Windows Sockets, the Windows
4672implemenation follows the same principles as the GNU/Linux one: 4672implementation follows the same principles as the GNU/Linux one:
4673 4673
4674@itemize @bullet 4674@itemize @bullet
4675@item It has a initalization part where it initializes the 4675@item It has a initalization part where it initializes the
@@ -4714,7 +4714,7 @@ broadcast messages. When it receives a broadcast message it will skip it.
4714@item Implement the broadcast functionality on Windows @emph{(currently 4714@item Implement the broadcast functionality on Windows @emph{(currently
4715working on)} 4715working on)}
4716@item Implement a testcase for the helper :@ @emph{The testcase 4716@item Implement a testcase for the helper :@ @emph{The testcase
4717consists of a program which emaluates the plugin and uses the helper. It 4717consists of a program which emulates the plugin and uses the helper. It
4718will simulate connections, disconnections and data transfers.} 4718will simulate connections, disconnections and data transfers.}
4719@end itemize 4719@end itemize
4720 4720
@@ -4902,7 +4902,7 @@ peers connecting, peers disconnecting and incoming messages) and send
4902messages to connected peers using 4902messages to connected peers using
4903@code{GNUNET_CORE_notify_transmit_ready}. Note that applications must 4903@code{GNUNET_CORE_notify_transmit_ready}. Note that applications must
4904cancel pending transmission requests if they receive a disconnect event 4904cancel pending transmission requests if they receive a disconnect event
4905for a peer that had a transmission pending; furthermore, queueing more 4905for a peer that had a transmission pending; furthermore, queuing more
4906than one transmission request per peer per application using the 4906than one transmission request per peer per application using the
4907service is not permitted. 4907service is not permitted.
4908 4908
@@ -5197,11 +5197,11 @@ The API is heavily base on the CORE API.
5197CADET delivers messages to other peers in "channels". 5197CADET delivers messages to other peers in "channels".
5198A channel is a permanent connection defined by a destination peer 5198A channel is a permanent connection defined by a destination peer
5199(identified by its public key) and a port number. 5199(identified by its public key) and a port number.
5200Internally, CADET tunnels all channels towards a destiantion peer 5200Internally, CADET tunnels all channels towards a destination peer
5201using one session key and relays the data on multiple "connections", 5201using one session key and relays the data on multiple "connections",
5202independent from the channels. 5202independent from the channels.
5203 5203
5204Each channel has optional paramenters, the most important being the 5204Each channel has optional parameters, the most important being the
5205reliability flag. 5205reliability flag.
5206Should a message get lost on TRANSPORT/CORE level, if a channel is 5206Should a message get lost on TRANSPORT/CORE level, if a channel is
5207created with as reliable, CADET will retransmit the lost message and 5207created with as reliable, CADET will retransmit the lost message and
@@ -5242,15 +5242,15 @@ case. To be alerted when a channel is online, a client can call
5242@code{GNUNET_CADET_notify_transmit_ready} immediately after 5242@code{GNUNET_CADET_notify_transmit_ready} immediately after
5243@code{GNUNET_CADET_create_channel}. When the callback is activated, it 5243@code{GNUNET_CADET_create_channel}. When the callback is activated, it
5244means that the channel is online. The callback can give 0 bytes to CADET 5244means that the channel is online. The callback can give 0 bytes to CADET
5245if no message is to be sent, this is ok. 5245if no message is to be sent, this is OK.
5246 5246
5247If a transmission was requested but before the callback fires it is no 5247If a transmission was requested but before the callback fires it is no
5248longer needed, it can be cancelled with 5248longer needed, it can be canceled with
5249@code{GNUNET_CADET_notify_transmit_ready_cancel}, which uses the handle 5249@code{GNUNET_CADET_notify_transmit_ready_cancel}, which uses the handle
5250given back by @code{GNUNET_CADET_notify_transmit_ready}. 5250given back by @code{GNUNET_CADET_notify_transmit_ready}.
5251As in the case of CORE, only one message can be requested at a time: a 5251As in the case of CORE, only one message can be requested at a time: a
5252client must not call @code{GNUNET_CADET_notify_transmit_ready} again until 5252client must not call @code{GNUNET_CADET_notify_transmit_ready} again until
5253the callback is called or the request is cancelled. 5253the callback is called or the request is canceled.
5254 5254
5255When a channel is no longer needed, a client can call 5255When a channel is no longer needed, a client can call
5256@code{GNUNET_CADET_channel_destroy} to get rid of it. 5256@code{GNUNET_CADET_channel_destroy} to get rid of it.
@@ -5298,10 +5298,10 @@ all of the details can be found in this technical report.
5298@subsection Motivation 5298@subsection Motivation
5299 5299
5300 5300
5301Some subsytems, like DHT, need to know the size of the GNUnet network to 5301Some subsystems, like DHT, need to know the size of the GNUnet network to
5302optimize some parameters of their own protocol. The decentralized nature 5302optimize some parameters of their own protocol. The decentralized nature
5303of GNUnet makes efficient and securely counting the exact number of peers 5303of GNUnet makes efficient and securely counting the exact number of peers
5304infeasable. Although there are several decentralized algorithms to count 5304infeasible. Although there are several decentralized algorithms to count
5305the number of peers in a system, so far there is none to do so securely. 5305the number of peers in a system, so far there is none to do so securely.
5306Other protocols may allow any malicious peer to manipulate the final 5306Other protocols may allow any malicious peer to manipulate the final
5307result or to take advantage of the system to perform 5307result or to take advantage of the system to perform
@@ -5323,7 +5323,7 @@ GNUnet's NSE protocol avoids these drawbacks.
5323The NSE subsystem is designed to be resilient against these attacks. 5323The NSE subsystem is designed to be resilient against these attacks.
5324It uses @uref{http://en.wikipedia.org/wiki/Proof-of-work_system, proofs of work} 5324It uses @uref{http://en.wikipedia.org/wiki/Proof-of-work_system, proofs of work}
5325to prevent one peer from impersonating a large number of participants, 5325to prevent one peer from impersonating a large number of participants,
5326which would otherwise allow an adversary to artifically inflate the 5326which would otherwise allow an adversary to artificially inflate the
5327estimate. 5327estimate.
5328The DoS protection comes from the time-based nature of the protocol: 5328The DoS protection comes from the time-based nature of the protocol:
5329the estimates are calculated periodically and out-of-time traffic is 5329the estimates are calculated periodically and out-of-time traffic is
@@ -5385,7 +5385,7 @@ to all the other peers, who will calculate the estimate from it.
5385The target value itself is generated by hashing the current time, rounded 5385The target value itself is generated by hashing the current time, rounded
5386down to an agreed value. If the rounding amount is 1h (default) and the 5386down to an agreed value. If the rounding amount is 1h (default) and the
5387time is 12:34:56, the time to hash would be 12:00:00. The process is 5387time is 12:34:56, the time to hash would be 12:00:00. The process is
5388repeated each rouning amount (in this example would be every hour). 5388repeated each rounding amount (in this example would be every hour).
5389Every repetition is called a round. 5389Every repetition is called a round.
5390 5390
5391@node Timing 5391@node Timing
@@ -5397,12 +5397,12 @@ its ID all at one. Once each peer has the target random value, it
5397compares its own ID to the target and calculates the hypothetical size of 5397compares its own ID to the target and calculates the hypothetical size of
5398the network if that peer were to be the closest. 5398the network if that peer were to be the closest.
5399Then it compares the hypothetical size with the estimate from the previous 5399Then it compares the hypothetical size with the estimate from the previous
5400rounds. For each value there is an assiciated point in the period, 5400rounds. For each value there is an associated point in the period,
5401let's call it "broadcast time". If its own hypothetical estimate 5401let's call it "broadcast time". If its own hypothetical estimate
5402is the same as the previous global estimate, its "broadcast time" will be 5402is the same as the previous global estimate, its "broadcast time" will be
5403in the middle of the round. If its bigger it will be earlier and if its 5403in the middle of the round. If its bigger it will be earlier and if its
5404smaller (the most likely case) it will be later. This ensures that the 5404smaller (the most likely case) it will be later. This ensures that the
5405peers closests to the target value start broadcasting their ID the first. 5405peers closest to the target value start broadcasting their ID the first.
5406 5406
5407@node Controlled Flooding 5407@node Controlled Flooding
5408@subsubsection Controlled Flooding 5408@subsubsection Controlled Flooding
@@ -5415,7 +5415,7 @@ with a message containing the better value. Then it checks a proof of
5415work that must be included in the incoming message, to ensure that the 5415work that must be included in the incoming message, to ensure that the
5416other peer's ID is not made up (otherwise a malicious peer could claim to 5416other peer's ID is not made up (otherwise a malicious peer could claim to
5417have an ID of exactly the target value every round). Once validated, it 5417have an ID of exactly the target value every round). Once validated, it
5418compares the brodcast time of the received value with the current time 5418compares the broadcast time of the received value with the current time
5419and if it's not too early, sends the received value to its neighbors. 5419and if it's not too early, sends the received value to its neighbors.
5420Otherwise it stores the value until the correct broadcast time comes. 5420Otherwise it stores the value until the correct broadcast time comes.
5421This prevents unnecessary traffic of sub-optimal values, since a better 5421This prevents unnecessary traffic of sub-optimal values, since a better
@@ -5429,7 +5429,7 @@ to the neighbors.
5429@c %**end of header 5429@c %**end of header
5430 5430
5431Once the closest ID has been spread across the network each peer gets the 5431Once the closest ID has been spread across the network each peer gets the
5432exact distance betweed this ID and the target value of the round and 5432exact distance between this ID and the target value of the round and
5433calculates the estimate with a mathematical formula described in the tech 5433calculates the estimate with a mathematical formula described in the tech
5434report. The estimate generated with this method for a single round is not 5434report. The estimate generated with this method for a single round is not
5435very precise. Remember the case of the example, where the only peer is the 5435very precise. Remember the case of the example, where the only peer is the
@@ -5477,7 +5477,7 @@ The callback provides two values: the average and the
5477@uref{http://en.wikipedia.org/wiki/Standard_deviation, standard deviation} 5477@uref{http://en.wikipedia.org/wiki/Standard_deviation, standard deviation}
5478of the last 64 rounds. The values provided by the callback function are 5478of the last 64 rounds. The values provided by the callback function are
5479logarithmic, this means that the real estimate numbers can be obtained by 5479logarithmic, this means that the real estimate numbers can be obtained by
5480calculating 2 to the power of the given value (2average). From a 5480calculating 2 to the power of the given value (average). From a
5481statistics point of view this means that: 5481statistics point of view this means that:
5482 5482
5483@itemize @bullet 5483@itemize @bullet
@@ -5503,7 +5503,7 @@ size is between one third and three times the estimate. This can of
5503course vary with network conditions. 5503course vary with network conditions.
5504Thus, applications may want to also consider the provided standard 5504Thus, applications may want to also consider the provided standard
5505deviation value, not only the average (in particular, if the standard 5505deviation value, not only the average (in particular, if the standard
5506veriation is very high, the average maybe meaningless: the network size is 5506variation is very high, the average maybe meaningless: the network size is
5507changing rapidly). 5507changing rapidly).
5508 5508
5509@node libgnunetnse - Examples 5509@node libgnunetnse - Examples
@@ -5584,7 +5584,7 @@ At the beginning of each round the peer does the following:
5584it has a better message in the "next round" slot which came early in the 5584it has a better message in the "next round" slot which came early in the
5585previous round) 5585previous round)
5586@item calculates, based on the stored round message (own or received) when 5586@item calculates, based on the stored round message (own or received) when
5587to stard flooding it to its neighbors 5587to start flooding it to its neighbors
5588@end itemize 5588@end itemize
5589 5589
5590Upon receiving a message the peer checks the validity of the message 5590Upon receiving a message the peer checks the validity of the message
@@ -6085,7 +6085,7 @@ convenience API to do just that. Use @code{GNUNET_IDENTITY_ego_lookup} to
6085lookup a single ego by name. Note that this is the user's name for the 6085lookup a single ego by name. Note that this is the user's name for the
6086ego, not the service function. The resulting ego will be returned via a 6086ego, not the service function. The resulting ego will be returned via a
6087callback and will only be valid during that callback. The operation can 6087callback and will only be valid during that callback. The operation can
6088be cancelled via @code{GNUNET_IDENTITY_ego_lookup_cancel} 6088be canceled via @code{GNUNET_IDENTITY_ego_lookup_cancel}
6089(cancellation is only legal before the callback is invoked). 6089(cancellation is only legal before the callback is invoked).
6090 6090
6091@node Associating egos with service functions 6091@node Associating egos with service functions
@@ -6658,7 +6658,7 @@ The size of an element's data is limited to around 62 KB.
6658 6658
6659Sets created by a local client can be modified and reused for multiple 6659Sets created by a local client can be modified and reused for multiple
6660operations. As each set operation requires potentially expensive special 6660operations. As each set operation requires potentially expensive special
6661auxilliary data to be computed for each element of a set, a set can only 6661auxiliary data to be computed for each element of a set, a set can only
6662participate in one type of set operation (i.e. union or intersection). 6662participate in one type of set operation (i.e. union or intersection).
6663The type of a set is determined upon its creation. 6663The type of a set is determined upon its creation.
6664If a the elements of a set are needed for an operation of a different 6664If a the elements of a set are needed for an operation of a different
@@ -6778,7 +6778,7 @@ until the client calls @code{GNUNET_SET_commit}
6778@c %**end of header 6778@c %**end of header
6779 6779
6780To create symmetry between the two ways of starting a set operation 6780To create symmetry between the two ways of starting a set operation
6781(accepting and nitiating it), the operation handles returned by 6781(accepting and initiating it), the operation handles returned by
6782@code{GNUNET_SET_accept} and @code{GNUNET_SET_prepare} do not yet have a 6782@code{GNUNET_SET_accept} and @code{GNUNET_SET_prepare} do not yet have a
6783set to operate on, thus they can not do any work yet. 6783set to operate on, thus they can not do any work yet.
6784 6784
@@ -6938,7 +6938,7 @@ It then checks if the set size of the sender and the XOR over the keys
6938match what is left of his own set. If they do, he sends a 6938match what is left of his own set. If they do, he sends a
6939@code{GNUNET_MESSAGE_TYPE_SET_INTERSECTION_P2P_DONE} back to indicate 6939@code{GNUNET_MESSAGE_TYPE_SET_INTERSECTION_P2P_DONE} back to indicate
6940that the latest set is the final result. 6940that the latest set is the final result.
6941Otherwise, the receiver starts another Bloom fitler exchange, except 6941Otherwise, the receiver starts another Bloom filter exchange, except
6942this time as the sender. 6942this time as the sender.
6943 6943
6944@node Salt 6944@node Salt
@@ -6946,7 +6946,7 @@ this time as the sender.
6946 6946
6947@c %**end of header 6947@c %**end of header
6948 6948
6949Bloomfilter operations are probablistic: With some non-zero probability 6949Bloomfilter operations are probabilistic: With some non-zero probability
6950the test may incorrectly say an element is in the set, even though it is 6950the test may incorrectly say an element is in the set, even though it is
6951not. 6951not.
6952 6952
@@ -6999,7 +6999,7 @@ message. If the IBF fully decodes, the peer responds with a
6999GNUNET_MESSAGE_TYPE_SET_UNION_P2P_DONE message instead of another 6999GNUNET_MESSAGE_TYPE_SET_UNION_P2P_DONE message instead of another
7000GNUNET_MESSAGE_TYPE_SET_UNION_P2P_IBF. 7000GNUNET_MESSAGE_TYPE_SET_UNION_P2P_IBF.
7001 7001
7002All Bloom filter operations use a salt to mingle keys before hasing them 7002All Bloom filter operations use a salt to mingle keys before hashing them
7003into buckets, such that future iterations have a fresh chance of 7003into buckets, such that future iterations have a fresh chance of
7004succeeding if they failed due to collisions before. 7004succeeding if they failed due to collisions before.
7005 7005
@@ -7557,7 +7557,7 @@ already knows more than about a thousand blocks may need to send
7557several of these messages. Naturally, the client should transmit these 7557several of these messages. Naturally, the client should transmit these
7558messages as quickly as possible after the original GET request such that 7558messages as quickly as possible after the original GET request such that
7559the DHT can filter those results in the network early on. Naturally, as 7559the DHT can filter those results in the network early on. Naturally, as
7560these messages are sent after the original request, it is conceivalbe 7560these messages are sent after the original request, it is conceivable
7561that the DHT service may return blocks that match those already known 7561that the DHT service may return blocks that match those already known
7562to the client anyway. 7562to the client anyway.
7563 7563
@@ -7670,7 +7670,7 @@ duplicate results) and when they obtain a matching, non-filtered response
7670a @code{struct PeerResultMessage} of type 7670a @code{struct PeerResultMessage} of type
7671@code{GNUNET_MESSAGE_TYPE_DHT_P2P_RESULT} is forwarded to the previous 7671@code{GNUNET_MESSAGE_TYPE_DHT_P2P_RESULT} is forwarded to the previous
7672hop. 7672hop.
7673Whenver a result is forwarded, the block plugin is used to update the 7673Whenever a result is forwarded, the block plugin is used to update the
7674Bloom filter accordingly, to ensure that the same result is never 7674Bloom filter accordingly, to ensure that the same result is never
7675forwarded more than once. 7675forwarded more than once.
7676The DHT service may also cache forwarded results locally if the 7676The DHT service may also cache forwarded results locally if the
@@ -7737,7 +7737,7 @@ record types.
7737 7737
7738@c %**end of header 7738@c %**end of header
7739 7739
7740The GNS API itself is extremely simple. Clients first connec to the 7740The GNS API itself is extremely simple. Clients first connect to the
7741GNS service using @code{GNUNET_GNS_connect}. 7741GNS service using @code{GNUNET_GNS_connect}.
7742They can then perform lookups using @code{GNUNET_GNS_lookup} or cancel 7742They can then perform lookups using @code{GNUNET_GNS_lookup} or cancel
7743pending lookups using @code{GNUNET_GNS_lookup_cancel}. 7743pending lookups using @code{GNUNET_GNS_lookup_cancel}.
@@ -7786,9 +7786,9 @@ their respective zones can automatically be learned and added to the
7786the shorten zone. If NULL is passed, shortening is disabled. 7786the shorten zone. If NULL is passed, shortening is disabled.
7787@item proc This argument identifies 7787@item proc This argument identifies
7788the function to call with the result. It is given proc_cls, the number of 7788the function to call with the result. It is given proc_cls, the number of
7789records found (possilby zero) and the array of the records as arguments. 7789records found (possibly zero) and the array of the records as arguments.
7790proc will only be called once. After proc,> has been called, the lookup 7790proc will only be called once. After proc,> has been called, the lookup
7791must no longer be cancelled. 7791must no longer be canceled.
7792@item proc_cls The closure for proc. 7792@item proc_cls The closure for proc.
7793@end table 7793@end table
7794 7794
@@ -7943,7 +7943,7 @@ This is merely one method for how we can obtain GNS queries.
7943It is also possible to change @code{resolv.conf} to point to a machine 7943It is also possible to change @code{resolv.conf} to point to a machine
7944running @code{gnunet-dns2gns} or to modify libc's name system switch 7944running @code{gnunet-dns2gns} or to modify libc's name system switch
7945(NSS) configuration to include a GNS resolution plugin. 7945(NSS) configuration to include a GNS resolution plugin.
7946The method described in this chaper is more of a last-ditch catch-all 7946The method described in this chapter is more of a last-ditch catch-all
7947approach. 7947approach.
7948 7948
7949@code{gnunet-service-dns} enables intercepting DNS traffic using policy 7949@code{gnunet-service-dns} enables intercepting DNS traffic using policy
@@ -8111,8 +8111,8 @@ This returns the handle required for all other operations on the
8111NAMECACHE. Using @code{GNUNET_NAMECACHE_block_cache} clients can insert a 8111NAMECACHE. Using @code{GNUNET_NAMECACHE_block_cache} clients can insert a
8112block into the cache. 8112block into the cache.
8113@code{GNUNET_NAMECACHE_lookup_block} can be used to lookup blocks that 8113@code{GNUNET_NAMECACHE_lookup_block} can be used to lookup blocks that
8114were stored in the NAMECACHE. Both operations can be cancelled using 8114were stored in the NAMECACHE. Both operations can be canceled using
8115@code{GNUNET_NAMECACHE_cancel}. Note that cancelling a 8115@code{GNUNET_NAMECACHE_cancel}. Note that canceling a
8116@code{GNUNET_NAMECACHE_block_cache} operation can result in the block 8116@code{GNUNET_NAMECACHE_block_cache} operation can result in the block
8117being stored in the NAMECACHE --- or not. Cancellation primarily ensures 8117being stored in the NAMECACHE --- or not. Cancellation primarily ensures
8118that the continuation function with the result of the operation will no 8118that the continuation function with the result of the operation will no
@@ -8299,7 +8299,7 @@ revocations.
8299@code{GNUNET_REVOCATION_query} is used to check if a given ECDSA public 8299@code{GNUNET_REVOCATION_query} is used to check if a given ECDSA public
8300key has been revoked. 8300key has been revoked.
8301The given callback will be invoked with the result of the check. 8301The given callback will be invoked with the result of the check.
8302The query can be cancelled using @code{GNUNET_REVOCATION_query_cancel} on 8302The query can be canceled using @code{GNUNET_REVOCATION_query_cancel} on
8303the return value. 8303the return value.
8304 8304
8305@node Preparing revocations 8305@node Preparing revocations
@@ -8477,7 +8477,7 @@ metadata describing the content of the namespace.
8477Instead of the name of the identifier for a potential update, it contains 8477Instead of the name of the identifier for a potential update, it contains
8478the identifier for the root of the namespace. 8478the identifier for the root of the namespace.
8479The URI should always be empty. The @code{SBlock} is signed with the 8479The URI should always be empty. The @code{SBlock} is signed with the
8480content provder's RSA private key (just like any other SBlock). Peers 8480content provider's RSA private key (just like any other SBlock). Peers
8481can search for @code{SBlock}s in order to find out more about a namespace. 8481can search for @code{SBlock}s in order to find out more about a namespace.
8482 8482
8483@node KSBlocks 8483@node KSBlocks
@@ -8800,5 +8800,5 @@ so please make sure that endpoints are unambiguous.
8800@subsection Endpoint documentation 8800@subsection Endpoint documentation
8801 8801
8802This is WIP. Endpoints should be documented appropriately. 8802This is WIP. Endpoints should be documented appropriately.
8803Perferably using annotations. 8803Preferably using annotations.
8804 8804