diff options
author | Christian Grothoff <christian@grothoff.org> | 2010-03-19 14:24:14 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2010-03-19 14:24:14 +0000 |
commit | 7b7ec4fefd44742d9368638df9670771b8eaf259 (patch) | |
tree | 4844964ba35da05901b8da27e90f4b97c22e6897 | |
parent | fb73dfb39e1ce87c32de6213e82399a1ba797d8c (diff) | |
download | gnunet-7b7ec4fefd44742d9368638df9670771b8eaf259.tar.gz gnunet-7b7ec4fefd44742d9368638df9670771b8eaf259.zip |
moving gnunet-peerinfo.c to allow it to use transport_api
-rw-r--r-- | HACKING | 2 | ||||
-rw-r--r-- | TODO | 50 | ||||
-rw-r--r-- | configure.ac | 1 | ||||
-rw-r--r-- | src/Makefile.am | 1 | ||||
-rw-r--r-- | src/peerinfo-tool/Makefile.am | 24 | ||||
-rw-r--r-- | src/peerinfo-tool/gnunet-peerinfo.c (renamed from src/peerinfo/gnunet-peerinfo.c) | 7 | ||||
-rw-r--r-- | src/peerinfo/Makefile.am | 10 |
7 files changed, 65 insertions, 30 deletions
@@ -6,7 +6,7 @@ include files: | |||
6 | - _plugin: plugin definition | 6 | - _plugin: plugin definition |
7 | - _protocol: structs used in network protocol | 7 | - _protocol: structs used in network protocol |
8 | - exceptions: | 8 | - exceptions: |
9 | * GNUNET_config.h --- generated // FIXME: decapitalize | 9 | * gnunet_config.h --- generated |
10 | * platform.h --- first included | 10 | * platform.h --- first included |
11 | * plibc.h --- external library | 11 | * plibc.h --- external library |
12 | * gnunet_common.h --- fundamental routines | 12 | * gnunet_common.h --- fundamental routines |
@@ -15,30 +15,20 @@ away), in order in which they will likely be done: | |||
15 | 15 | ||
16 | 0.9.0pre0: | 16 | 0.9.0pre0: |
17 | * TRANSPORT: | 17 | * TRANSPORT: |
18 | - TCP not used bi-directionally (especially important also for PONG!) | ||
19 | Need a way for plugin to tell to service that it can *reliably* transmit | ||
20 | PONGs. Need *good* way to ensure only one (plugin) session is active at | ||
21 | any given point in time; need systematic way to periodically probe latency/ | ||
22 | transport cost changes | ||
23 | - disconnect notifications from TCP not always as nice as we might want | ||
24 | them to be (but how can we do this cleanly given that UDP is connectionless?) | ||
25 | - implement transport API to pretty-print transport address | 18 | - implement transport API to pretty-print transport address |
26 | + resolve cyclic dependency (gnunet-peerinfo -> transport_api -> peerinfo!) | 19 | + resolve cyclic dependency (gnunet-peerinfo -> transport_api -> peerinfo!) |
27 | + gnunet-transport-service crashes when asked to resolve address (!) | 20 | + gnunet-transport-service crashes when asked to resolve address (!) |
28 | + asynchronous transport lookup and non-CPS iterator in peerinfo require | 21 | + asynchronous transport lookup and non-CPS iterator in peerinfo require |
29 | some work to ensure printing in the proper order... | 22 | some work to ensure printing in the proper order... |
30 | - instantly filter addresses from *other* peers that | ||
31 | are *equal* to our own address + port (i.e., localhost:2086). We | ||
32 | no longer filter those for outgoing (helps with loopback testing | ||
33 | and keeps the code clean), but we should filter strictly *impossible* | ||
34 | incoming addresses! This is for efficiency, not correctness. | ||
35 | - [./transport/gnunet-service-transport.c:173]: (style) struct or union member 'TransportPlugin::rebuild' is never used | ||
36 | - [./transport/plugin_transport_tcp.c:391]: (style) struct or union member 'Plugin::address_update_task' is never used | ||
37 | * CORE: | 23 | * CORE: |
38 | - SET_KEY is triggered every 2.5 minutes (after session is up); should | 24 | - SET_KEY is triggered every 2.5 minutes (after session is up); should |
39 | just do PING (not SET_KEY + PING) | 25 | just do PING (not SET_KEY + PING) |
40 | - "Forcing disconnect of XXX due to inactivity" -- can happen every few MS!? | 26 | - "Forcing disconnect of XXX due to inactivity" -- can happen every few MS!? |
41 | (disconnect does not really succeed, or what?) | 27 | (disconnect does not really succeed, or what?) |
28 | Also, core does not seem to actually decrement the number of active | ||
29 | sessions even if no connections exist for a while! (likely related...) | ||
30 | - transport reports bw quota violations on big-endian systems (core or | ||
31 | transport issue?) | ||
42 | * HELLO: | 32 | * HELLO: |
43 | - need function to test "equivalency" of HELLOs; use in topology! | 33 | - need function to test "equivalency" of HELLOs; use in topology! |
44 | * FS: | 34 | * FS: |
@@ -253,10 +243,38 @@ away), in order in which they will likely be done: | |||
253 | - Remove KBlocks in gnunet-unindex (see discussion with Kenneth Almquist on gnunet-devs in 9/2009) | 243 | - Remove KBlocks in gnunet-unindex (see discussion with Kenneth Almquist on gnunet-devs in 9/2009) |
254 | - Allow checking of presence of search results and/or content via command-line tools | 244 | - Allow checking of presence of search results and/or content via command-line tools |
255 | (add options to gnunet-search / gnunet-download to limit search to local peer) | 245 | (add options to gnunet-search / gnunet-download to limit search to local peer) |
256 | * STATISTICS: | ||
257 | - should use BIO instead of mmap | ||
258 | * PEERINFO: | 246 | * PEERINFO: |
259 | - expire 'ancient' HELLOs (those without valid addresses AND that | 247 | - expire 'ancient' HELLOs (those without valid addresses AND that |
260 | we have not 'used' (for their public keys) in a while; need a way | 248 | we have not 'used' (for their public keys) in a while; need a way |
261 | to track actual 'use') | 249 | to track actual 'use') |
262 | - make sue we also trigger notifications whenever HELLOs expire | 250 | - make sue we also trigger notifications whenever HELLOs expire |
251 | |||
252 | |||
253 | |||
254 | Optimizations: | ||
255 | * TCP: | ||
256 | - should use hash map to look up sessions | ||
257 | * PEERINFO: | ||
258 | - api creates many, many short-lived TCP connections; either some | ||
259 | clients should use the API differently or we need to change the | ||
260 | API to enable re-use of connections to the service | ||
261 | * STATISTICS: | ||
262 | - should use BIO instead of mmap | ||
263 | * TRANSPORT: | ||
264 | - need to periodically probe latency/transport cost changes & possibly switch transport | ||
265 | - instantly filter addresses from *other* peers that | ||
266 | are *equal* to our own address + port (i.e., localhost:2086). We | ||
267 | no longer filter those for outgoing (helps with loopback testing | ||
268 | and keeps the code clean), but we should filter strictly *impossible* | ||
269 | incoming addresses! This is for efficiency, not correctness. | ||
270 | - should use hash map to look up Neighbours | ||
271 | |||
272 | Minor features: | ||
273 | * TCP: | ||
274 | - repeatedly resolve hostname and look up interfaces to determine our own IP | ||
275 | - [./transport/plugin_transport_tcp.c:391]: (style) struct or union member 'Plugin::address_update_task' is never used (related to issue above) | ||
276 | * TRANSPORT: | ||
277 | - [./transport/gnunet-service-transport.c:173]: (style) struct or union member 'TransportPlugin::rebuild' is never used (related to TCP not refreshing external addresses?) | ||
278 | |||
279 | |||
280 | |||
diff --git a/configure.ac b/configure.ac index 41157ca29..4251e329c 100644 --- a/configure.ac +++ b/configure.ac | |||
@@ -655,6 +655,7 @@ src/nat/Makefile | |||
655 | src/nat/libnatpmp/Makefile | 655 | src/nat/libnatpmp/Makefile |
656 | src/nat/miniupnp/Makefile | 656 | src/nat/miniupnp/Makefile |
657 | src/peerinfo/Makefile | 657 | src/peerinfo/Makefile |
658 | src/peerinfo-tool/Makefile | ||
658 | src/statistics/Makefile | 659 | src/statistics/Makefile |
659 | src/template/Makefile | 660 | src/template/Makefile |
660 | src/testing/Makefile | 661 | src/testing/Makefile |
diff --git a/src/Makefile.am b/src/Makefile.am index 4d63bc756..a01288078 100644 --- a/src/Makefile.am +++ b/src/Makefile.am | |||
@@ -22,6 +22,7 @@ SUBDIRS = \ | |||
22 | datastore \ | 22 | datastore \ |
23 | template \ | 23 | template \ |
24 | transport \ | 24 | transport \ |
25 | peerinfo-tool \ | ||
25 | core \ | 26 | core \ |
26 | testing \ | 27 | testing \ |
27 | $(HOSTLIST_DIR) \ | 28 | $(HOSTLIST_DIR) \ |
diff --git a/src/peerinfo-tool/Makefile.am b/src/peerinfo-tool/Makefile.am new file mode 100644 index 000000000..b9e6d7d07 --- /dev/null +++ b/src/peerinfo-tool/Makefile.am | |||
@@ -0,0 +1,24 @@ | |||
1 | INCLUDES = -I$(top_srcdir)/src/include | ||
2 | |||
3 | if MINGW | ||
4 | WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols -lole32 -lshell32 -luuid -liconv -lstdc++ -lcomdlg32 -lgdi32 | ||
5 | endif | ||
6 | |||
7 | if USE_COVERAGE | ||
8 | AM_CFLAGS = --coverage -O0 | ||
9 | XLIB = -lgcov | ||
10 | endif | ||
11 | |||
12 | bin_PROGRAMS = \ | ||
13 | gnunet-peerinfo | ||
14 | |||
15 | gnunet_peerinfo_SOURCES = \ | ||
16 | gnunet-peerinfo.c | ||
17 | gnunet_peerinfo_LDADD = \ | ||
18 | $(top_builddir)/src/peerinfo/libgnunetpeerinfo.la \ | ||
19 | $(top_builddir)/src/transport/libgnunettransport.la \ | ||
20 | $(top_builddir)/src/util/libgnunetutil.la | ||
21 | |||
22 | |||
23 | #check_SCRIPTS = \ | ||
24 | # test_gnunet_peerinfo.sh | ||
diff --git a/src/peerinfo/gnunet-peerinfo.c b/src/peerinfo-tool/gnunet-peerinfo.c index d4a36a059..c056b390e 100644 --- a/src/peerinfo/gnunet-peerinfo.c +++ b/src/peerinfo-tool/gnunet-peerinfo.c | |||
@@ -1,6 +1,6 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of GNUnet. | 2 | This file is part of GNUnet. |
3 | (C) 2001, 2002, 2003, 2004, 2006, 2009 Christian Grothoff (and other contributing authors) | 3 | (C) 2001, 2002, 2003, 2004, 2006, 2009, 2010 Christian Grothoff (and other contributing authors) |
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 |
@@ -19,7 +19,7 @@ | |||
19 | */ | 19 | */ |
20 | 20 | ||
21 | /** | 21 | /** |
22 | * @file peerinfo/gnunet-peerinfo.c | 22 | * @file peerinfo-tool/gnunet-peerinfo.c |
23 | * @brief Print information about other known peers. | 23 | * @brief Print information about other known peers. |
24 | * @author Christian Grothoff | 24 | * @author Christian Grothoff |
25 | */ | 25 | */ |
@@ -41,6 +41,8 @@ static struct GNUNET_SCHEDULER_Handle *sched; | |||
41 | 41 | ||
42 | static const struct GNUNET_CONFIGURATION_Handle *cfg; | 42 | static const struct GNUNET_CONFIGURATION_Handle *cfg; |
43 | 43 | ||
44 | #define FIXME 0 | ||
45 | |||
44 | #if FIXME | 46 | #if FIXME |
45 | /** | 47 | /** |
46 | * Function to call with a human-readable format of an address | 48 | * Function to call with a human-readable format of an address |
@@ -56,7 +58,6 @@ print_resolved_address (void *cls, | |||
56 | once, otherwise we mix results... */ | 58 | once, otherwise we mix results... */ |
57 | if (address == NULL) | 59 | if (address == NULL) |
58 | { | 60 | { |
59 | fprintf (stderr, "\n"); | ||
60 | return; | 61 | return; |
61 | } | 62 | } |
62 | fprintf (stderr, " %s\n", address); | 63 | fprintf (stderr, " %s\n", address); |
diff --git a/src/peerinfo/Makefile.am b/src/peerinfo/Makefile.am index ea7ef1316..42396e3e7 100644 --- a/src/peerinfo/Makefile.am +++ b/src/peerinfo/Makefile.am | |||
@@ -23,15 +23,8 @@ libgnunetpeerinfo_la_LDFLAGS = \ | |||
23 | 23 | ||
24 | 24 | ||
25 | bin_PROGRAMS = \ | 25 | bin_PROGRAMS = \ |
26 | gnunet-peerinfo \ | ||
27 | gnunet-service-peerinfo | 26 | gnunet-service-peerinfo |
28 | 27 | ||
29 | gnunet_peerinfo_SOURCES = \ | ||
30 | gnunet-peerinfo.c | ||
31 | gnunet_peerinfo_LDADD = \ | ||
32 | $(top_builddir)/src/peerinfo/libgnunetpeerinfo.la \ | ||
33 | $(top_builddir)/src/util/libgnunetutil.la | ||
34 | |||
35 | gnunet_service_peerinfo_SOURCES = \ | 28 | gnunet_service_peerinfo_SOURCES = \ |
36 | gnunet-service-peerinfo.c | 29 | gnunet-service-peerinfo.c |
37 | gnunet_service_peerinfo_LDADD = \ | 30 | gnunet_service_peerinfo_LDADD = \ |
@@ -54,6 +47,3 @@ test_peerinfo_api_LDADD = \ | |||
54 | 47 | ||
55 | EXTRA_DIST = \ | 48 | EXTRA_DIST = \ |
56 | test_peerinfo_api_data.conf | 49 | test_peerinfo_api_data.conf |
57 | |||
58 | #check_SCRIPTS = \ | ||
59 | # test_gnunet_peerinfo.sh | ||