gardners
17ea1b69b3
don't look at all BARs if we are too slow.
2013-02-20 15:36:29 +10:30
gardners
f114e6d19e
add progress data for each rhizome transfer.
2013-02-20 15:36:28 +10:30
gardners
3bd4c49af5
add more info to /rssi http page.
2013-02-20 15:36:27 +10:30
Jeremy Lakeman
ca5eb7d8bb
Reinstate simple slip code, improve debug messages
2013-02-20 15:36:27 +10:30
Jeremy Lakeman
e4d6520c46
Don't request manifests that are already in the fetch queue
2013-02-20 15:36:25 +10:30
Jeremy Lakeman
6d9bbe2e2c
Refactor interface handling to separate encapsulation from stream type
2013-02-20 15:36:23 +10:30
Jeremy Lakeman
ba1800012e
Only advertise BAR's on an alarm
...
- we no longer hit the database for every outgoing packet, attempting to announce bundles
- we no longer advertise manifests periodically
- when an interesting bar arrives, we ask for the manifest to be announced, which uses the existing packet format
2013-02-20 15:36:23 +10:30
Jeremy Lakeman
84ad4debfa
Throttle serial radio devices when tx buffer is in use
2013-02-20 15:36:22 +10:30
Jeremy Lakeman
2967d1e00f
Don't check for duplicates if an existing id has been supplied
2013-01-03 11:18:30 +10:30
Jeremy Lakeman
a492c05d64
Re-add database cleanup
2012-12-31 15:09:12 +10:30
Jeremy Lakeman
3f45623d04
New stress test, rhizome add while transferring
2012-12-27 16:51:31 +10:30
Jeremy Lakeman
0f81c1f641
Minor code cleanup
2012-12-14 17:07:28 +10:30
Jeremy Lakeman
4264dec978
Reduce logging
2012-12-12 13:18:19 +10:30
Jeremy Lakeman
1a26a3e452
Reduce log spam
2012-12-12 10:02:43 +10:30
Andrew Bettison
5985df751d
Overhaul debug flags
...
Replace debugflags_t and DEBUG_XXX bit masks with config schema "debug.xxx"
entries.
No more support for "debug.all".
2012-12-11 15:59:46 +10:30
Jeremy Lakeman
4b73e42bed
Merge remote-tracking branch 'origin/master' into rhizomeovermdp
...
Conflicts:
rhizome_fetch.c
2012-12-06 13:27:04 +10:30
Jeremy Lakeman
59babd75a2
Fix SEGV if connect fails immediately
2012-12-06 10:35:20 +10:30
gardners
e8cfac1462
don't try mdp fall back when performing an http rhizome direct transfer.
2012-12-06 09:42:27 +10:30
gardners
e2cf0ff506
fixed bug with rhizome direct sync manifest fetching.
2012-12-06 09:31:41 +10:30
gardners
5416e4baca
fixed bugs that were preventing writing to database blob from
...
buffer. Increased maximum buffer size to useful size.
2012-12-04 17:26:47 +10:30
gardners
39f99da3f2
fixing various bugs with rhizome streaming to database.
2012-12-04 17:18:31 +10:30
Jeremy Lakeman
6a5efcc445
Remove buggy debug code
2012-12-04 16:50:27 +10:30
gardners
f827c7c1c8
fixed various problems following split of files into fileblobs
2012-12-04 16:47:45 +10:30
Jeremy Lakeman
33e44ed6be
Don't unwatch if the file descriptor is already closed
2012-12-04 16:30:01 +10:30
gardners
6dfe654ab0
adjusted tuning of Rhizome over MDP to use 32x1KB packets for
...
better throughput. Still sub-optimal for wired ethernet type
interfaces, but should be ok for WiFi where max broadcast throughput
is 100kb/sec.
2012-12-04 16:19:22 +10:30
Jeremy Lakeman
bd83c192bb
Use consistent length constant
2012-12-04 16:18:51 +10:30
gardners
fc0c134cbf
added speed indication on completion of rhizome transfer.
...
split files table into files and fileblobs to avoid pathological
delays when updating datavalid flag in files table (sqlite copies
the whole table row, including possibly large blob).
2012-12-04 16:03:56 +10:30
gardners
23cace8455
removed writing temporary file for debugging.
2012-12-04 13:49:47 +10:30
gardners
2e4e111764
fixed bug that prevented remaining rhizome tests from passing.
2012-12-04 08:50:00 +10:30
gardners
a7e09aac2c
fixed scheduling bug that stopped rhizomeprotocol tests 1 and 3.
2012-12-04 08:30:58 +10:30
gardners
254b0a4fd6
fixed problem with rhizome over http (alarm without callback
...
specified).
2012-12-04 07:12:03 +10:30
gardners
fcd5142aaf
fixed bug with streaming to database of rhizome fetches.
2012-12-04 06:56:10 +10:30
gardners
abcac03981
work on tracking down hash calculation bug for files > one
...
window long.
2012-12-04 06:26:44 +10:30
gardners
43316ade3a
added buffer when streaming to database so that we don't waste
...
most of our time opening and closing blobs, and don't have to keep
the blob open all the time.
2012-12-03 21:47:02 +10:30
gardners
de7a4ce2e3
fixed bugs with rhizome streaming direct to database.
...
that now works, but rhizome direct pull now fails.
2012-12-03 20:51:14 +10:30
gardners
e108fe0822
fixed bug in handling of sqlite3_blob_write(). Still more to fix.
2012-12-03 17:10:39 +10:30
gardners
5d24ba7db9
first cut at progressive hashing and checking of hash when streaming
...
file into database via rhizome.
2012-12-03 17:05:12 +10:30
gardners
e08593b466
stream manifest to buffer, and files to blob in database instead
...
of via files.
NOT COMPLETE - needs to calculate progressive hash and decide
if file is ok at end of import.
2012-12-03 16:52:08 +10:30
gardners
7ec695c940
feedback from code review by Jeremy.
...
Some preparation for out-of-order handling.
Consolidated redundantly redundant fields in fetch slot structure.
Probably fixed spurious alarm bug.
2012-12-03 11:50:35 +10:30
gardners
115736f0a4
cleaned out excess debugging messages and upped block size from
...
200 bytes to 1KB to greatly improve throughput. Will eventually
want to make block size selection be based on network interface.
2012-12-01 10:52:08 +10:30
gardners
b7ae55c143
receiving multiple bundles via rhizome over mdp works now, although
...
there is a bug with alarms being called on fetch slots after they
complete, even though they apparently get unscheduled.
2012-12-01 10:47:19 +10:30
gardners
55df66f6d6
culled some debug output.
...
mostly works, but fetch slots can get muddled.
2012-12-01 07:43:18 +10:30
gardners
ac734ff00d
fixed bugs with rhizome over mdp receive for files >32*200 bytes
...
long. also we request next block of data immediately after
receiving all of the previous block.
2012-12-01 07:37:22 +10:30
gardners
7e6d836627
remember to update timeout when storing data via rhizome mdp.
2012-11-30 22:55:10 +10:30
gardners
41261bf122
gadzooks, rhizome over mdp appears to work.
2012-11-30 22:45:27 +10:30
gardners
dbb1fe8d1e
rhizome over mdp now writes content for in-order packets, and
...
import gets triggered, but file hash currently doesn't match.
2012-11-30 22:42:28 +10:30
gardners
79c90dde6e
now rhizome mdp replies get parsed and the appropriate slot, if
...
any, is located.
2012-11-30 22:26:31 +10:30
gardners
1be28246e4
we now pass bid+version in Rhizome over MDP block request.
2012-11-30 21:13:29 +10:30
gardners
0c7419da5d
changed bar to bid in rhizome mdp fetch elements, because that
...
is probably the better way to address the content. Should add
version to make sure.
2012-11-30 21:08:06 +10:30
gardners
e5d5f3f750
fixed bugs with Rhizome over MDP requests. Now seems to output
...
a series of MDP block requests as it should.
2012-11-30 20:20:33 +10:30
gardners
11cce162dc
fixed bugs with preparing Rhizome MDP packets (source sid was not
...
being set properly).
2012-11-30 20:06:47 +10:30
gardners
05745d9b9a
same fix as previous commit, but in another place.
2012-11-30 20:03:53 +10:30
gardners
5becae0136
fixed segfault bug with obtaining own SID.
2012-11-30 20:03:18 +10:30
gardners
7a4e3d20f8
Actually send Rhizome over MDP request packets.
...
Actually call appropriate callback when receiving Rhizome over
MDP packets.
2012-11-30 14:17:05 +10:30
gardners
eb7524e068
factored out internal MDP services into a separate file, and made
...
core case statement in that brief and clear.
2012-11-30 11:48:00 +10:30
gardners
a665750f4c
prepare and dispatch mdp frames for rhizome over mdp.
...
still need to set bodies of frames, and schedule call backs,
and handle the requests when received.
2012-11-29 21:08:11 +10:30
gardners
c05ebada8c
more work on rhizome over MDP.
2012-11-29 20:39:30 +10:30
gardners
629a36f041
call switch to mdp fetch if http request setup fails.
2012-11-29 16:43:19 +10:30
gardners
a07e5761c4
added code to try switching to mdp if http fetching fails for
...
any reason.
2012-11-29 16:15:51 +10:30
gardners
faad1f26b1
Pass SID as well as ip:port through rhizome fetch request logic.
...
This is in preparation for rhizome over MDP.
2012-11-29 15:38:04 +10:30
Andrew Bettison
c84b7e5db4
Improve str.h functions
...
Add strn_startswith() and strncase_startswith().
Make all str*_startswith() functions take const char * arguments, to make it
possible to do safe programming with consts.
2012-11-20 18:10:08 +10:30
Andrew Bettison
0e435683f7
Move toprint functions from log.h to str.h
...
Move alloca_sockaddr() to strbuf_helpers.h
So that stand-alone executables can use them without pulling in the entire
logging framework.
2012-11-20 18:10:08 +10:30
Andrew Bettison
b66d8d6c5b
Fix bug in 'rhizome direct pull'
...
Was not fetching payload of remote bundle, just manifest. The problem was
caused by a change of logic recently to not activate any queued fetch
candidates immediately, but wait until the next fd_poll(), so that parsing a
single packetful of rhizome advertisments would start fetching the most
important one first, instead of the first one parsed.
2012-11-12 16:24:38 +10:30
Jeremy Lakeman
2993ee46c7
Move rhizome fetch info message to end of transfer
2012-11-12 15:35:53 +10:30
Jeremy Lakeman
c79c5d8968
Fix fetch process for manifests with the same payload, make sure failures don't get stuck in a loop
2012-11-09 15:57:06 +10:30
Andrew Bettison
a29f685bdd
Fix assertion failure in new Rhizome fetch queue logic
...
Revealed by improved Rhizome stress test that uses wide range of file sizes.
2012-11-05 14:46:16 +10:30
Andrew Bettison
39fc4ce6de
Issue #30 , remove periodic Rhizome fetch alarm
...
Replace the main-loop scheduled periodic alarm with an "activate" alarm that is
scheduled whenever a fetch candidate is added to any queue, unless the alarm is
already scheduled.
Replace the "rhizome.fetch_interval_ms" config item with
"rhizome.fetch_delay_ms" [default 50], which is the number of milliseconds
between adding a fetch candidate and firing the "activate" alarm. This allows
time for a few more Rhizome advertisment packets to arrive after the first one,
before deciding which fetches to start first.
Add new `is_scheduled()` alarm primitive.
2012-10-24 15:13:50 +10:30
Andrew Bettison
935a545ac7
Issue #30 , fix Rhizome fetch slot allocation logic
...
Also improve the block comment documentation of many functions.
2012-10-24 12:08:41 +10:30
Andrew Bettison
9ee9b63aad
Issue #30 , fox SEGV bug in new Rhizome fetch queue code
...
The rhizomestress test now passes, also all rhizomeprotocol tests.
2012-10-24 09:59:36 +10:30
Andrew Bettison
a9d3a1387c
Issue #30 , rewrite Rhizome fetch queues and slots
...
Causes SEGV in rhizomestress test.
2012-10-23 18:10:20 +10:30
Andrew Bettison
65ea612e27
Fix bugs revealed by Rhizome stress test
...
Overhauled the file fetch queue logic in rhizome_fetch.c.
Now the 'rhizomeprotocol' stress test passes in approximately 5 minutes on my
2009-vintage Dell laptop.
Added a call to rhizome_enqueue_suggestions() in rhizome_fetch_close() so that
a new Rhizome GET request is sent as soon as a fetch slot becomes free, instead
of waiting for the (default 5 second) timer to trigger the next GET.
2012-10-18 17:30:22 +10:30
Andrew Bettison
5ee82689d2
Start fixing Rhizome stress bugs
...
This commit does not compile.
2012-10-18 11:56:02 +10:30
Jeremy Lakeman
8b9505670d
Fix handling of socket closure on OSX
2012-10-08 16:53:52 +10:30
Andrew Bettison
89343c69cd
Merge branch 'rhizomedirect' into 'master'
2012-10-05 17:45:30 +09:30
Andrew Bettison
2e7d19a3f7
Issue #9 , fix rhizome direct push and sync tests
...
The "rhizome direct push" command (and also sync) was not waiting for the
server's HTTP response, so it was exiting before the server had finished
storing the bundle, which led to a race with the subsequent "assert
bundle_received_by" test. Fixed by adding the missing code to receive the HTTP
response.
Refactored the code used for parsing HTTP responses in rhizome_fetch.c, and
used it in rhizome_direct_http.c.
2012-10-04 17:38:33 +09:30
gardners
d43db3335c
Looks like rhizome direct http pull works now.
...
But tests don't yet pass ... #9
2012-10-03 15:50:43 +02:00
gardners
25a64b5485
fixed some more bugs in rhizome direct http pull.
...
Now actually triggers the http request to obtain the file, but
the peer address is 0.0.0.0:0. Investigating. #9
2012-10-03 15:50:43 +02:00
gardners
81cc9ddb45
more work on rhizome direct http pull. Now passing all the right
...
data we need to allow the prefix2manifest reception to launch
the file body request via normal rhizome http fetch process. #9
2012-10-03 15:50:43 +02:00
gardners
17de56a04c
fixed some problems with the rhizome direct http pull setup code.
...
still working on remaining issues. #9
2012-10-03 15:50:43 +02:00
gardners
a81dafa180
work towards making rhizome direct http pull work. #9
2012-10-03 15:49:40 +02:00
Andrew Bettison
5fed0460e1
Issue #9 , 'rhizomeprotocol' HttpImport test now passes
...
Any HTTP client can import a bundle into Rhizome using a PUSH request.
2012-10-02 17:15:14 +09:30
Andrew Bettison
cc9cb8d827
Issue #9 , fix old 'rhizomeprotocol' test failures
...
Now only the five new Rhizome Direct tests fail.
2012-10-02 16:32:48 +09:30
Andrew Bettison
17ef2249e4
Issue #9 , rewrite rhizome_import_bundle()
...
Objective is to avoid having to call system("servald rhizome import ...") to
handle a Rhizome direct POST /rhizome/bundle request. Antiquated code in and
around rhizome_import_bundle() needs much cleaning up, as indicated by some
TODO comments. Invocations must unnecessarily write the manifest into a file,
when they already have it in memory, ready to pass to the function.
All the 'rhizomeops' tests pass, but two 'rhizomeprotocol' tests are broken
by the changes in this commit.
2012-09-28 17:55:43 +09:30
Andrew Bettison
76401bd31b
Improve some Rhizome debug logging code
2012-09-27 15:34:13 +09:30
Jeremy Lakeman
ac3864ff20
Reuse command line parsing framework with monitor interface
2012-09-25 13:31:34 +09:30
Andrew Bettison
45e3d1d078
Add more debug to Rhizome fetch code
...
To help investigate issue #16 , 'rhizomeprotocol' test case 1 failing on
Solaris.
2012-09-13 14:43:47 +09:30
Jeremy Lakeman
df0e20408c
Close sockets on poll errors
2012-08-31 15:04:06 +09:30
Andrew Bettison
385e2bdb4e
Improve Rhizome INFO messages
2012-08-17 19:42:11 +09:30
Andrew Bettison
12d8bc0c12
Use new typedef time_ms_t everywhere
2012-08-09 12:14:32 +09:30
Andrew Bettison
240be25793
Replace overlay_gettime_ms() with gettime_ms()
2012-07-30 17:22:38 +09:30
Andrew Bettison
04b95d2590
Merge branch 'andrew' into 'master'
2012-07-25 18:04:16 +09:30
Andrew Bettison
0e5c5e0e98
More work on dnahelper, almost done
...
Servald starts DNA helper, receives startup ACK, sends requests, receives
responses, handles malformed helper responses, echoes dnahelper stderr lines to
log, sends MDP reply packet, waits for dead helper process, all asynchronously.
Shuts down helper process during servald shutdown.
Remaining issues:
- Does not impose a timeout on helper responses.
- Only the first URI is reported by the "dna lookup" command.
2012-07-20 18:17:43 +09:30
Jeremy Lakeman
1d53726b7b
Merge remote-tracking branch 'origin/master'
...
Conflicts:
rhizome_fetch.c
rhizome_http.c
testframework.sh
2012-07-17 15:39:55 +09:30
Andrew Bettison
b50943d09c
Fix handling of empty payload (filesize = 0)
...
Do not add 'filehash' var to manifest if filesize=0
Do not accept 'filehash' var when parsing manifest with filesize=0
When responding to a new rhizome advertisement, do not try to HTTP
request a payload if filesize=0, just import the manifest directly
Various operations, eg "rhizome file add", do not report 'filehash'
fields where 'filesize' is zero
Do not delete rows from MANIFESTS table which have empty filehash
Various related bug fixes
2012-07-16 18:40:30 +09:30
Andrew Bettison
c791ba94d0
Refactor HTTP response parsing
...
Remove need to nul-terminate the received buffers in HTTP fetch reply handling
and HTTP server request parsing.
Remove redundant copying of data.
More rigorous parsing code, probably less vulnerable to overrun exploits.
Better debug logging of requests and responses.
2012-07-13 18:06:55 +09:30
Jeremy Lakeman
c09582a220
Transfer should work for small files that arrive with the headers
2012-07-13 13:44:05 +09:30
Jeremy Lakeman
0255d7938e
Transfer should work for small files that arrive with the headers
2012-07-13 12:30:19 +09:30
Jeremy Lakeman
27c24f377e
Add deadline time for alarm prioritisation
2012-07-13 12:18:45 +09:30
Andrew Bettison
49ee4d13f0
Re-write manifest parsing, improve rhizome_fetch.c logging
...
Rhizome manifest parser now parses and validates all known fields, informs
about unsupported fields, and unpacks fields into relevant struct manifest
elements where appropriate. Is also stricter about whitespace.
Rhizome fetch code now logs debug messages if DEBUG_RHIZOME_RX bit is on.
2012-07-12 16:39:01 +09:30
Andrew Bettison
ff2c98afb3
Add "rhizome.fetch_interval_ms" config option
2012-07-11 16:51:30 +09:30