Update to 395. Still doesn't work for me.

395:

- Limit outgoing msgs according to available bandwidth. This means
that contrary to previous builds, which relied on socket buffers
becoming full and write()s going to block the code guesstimates
the time it takes for each message to go out, according to the
currently available bandwidth. This should reduce the lag of messages
and at the same time give a better picture for the queue size
calculations that have an influence on the routing of messages

- Rewrote the network functions inet_addr/inet_ntoa and ntohs/htons
into combined functions in src/sock.c - this simplifies the debug
code, which always had to call several functions to print an IP:port
- and it would/will make it easier to move the code to a different,
additional protocol in the future (like IPV6 or something entirely
different). Another reason for this was that I suspected some nodes
trying to exploit bugs in OS's network functions. I saw several IP
numbers with trailing blanks, or blanks after then numbers etc.
The code in sock.c is very rigorous about the format: if anything
is non-standard in a dotted quad IP number and/or port, the address
is considered invalid and the function calling it will fail. "No
grace" ;)

- Finn, a (new?) Entropy tester, found a resource leak in config.c
- the conf_update() function was not closing the file handle that
was used to change back to the previous working directory (or
current working directory). This would lead to "Out of file handles"
errors after some hours or days, depending how many file handles
were available to the user running Entropy.

394:

This one fixes a lot of flaws and bugs in string buffer handling
(look at the CVSweb history to see where they were). I found most
of the bugs after switching to the new, builtin (v)snprintf - after
fixing some bugs in the new code itself.

Some of bugs were more serious, such as a mismatch between array
size declaration and initialization in sha1.c

It looks like the code needs much more auditing to avoid this kind
of bugs, or at least find them and eliminate them at some point.

394 won't talk to nodes running builds prior to 393; please update
more often if you're still running 38x builds.

393:

?

392:

After observing my nodes for quite some time and looking at the
reasons why certain keys would never go out, I reworked the timing,
delays and retries, as well as a node's general responsiveness
(limiting of replies due the data store's fingerprint).

This build has a timing that more closely meets a node's available
bandwidths as the prior versions. The delays are based on the sizes
of keys, retry number etc.

With the few nodes that are running build 392 I can already see an
improvement, so you might want to upgrade, too

391:

And another stupid bug:  There was a cut and past bug in peer_adv_key().
I must've happened recently, and was definitely a show stopper.
The GLOBAL_LOCK was unlocked twice - fortunately the osd_sem_post()
function cancelled the double unlock, but the code was still wrong,
so there you go...

390:

It fixes two bugs in the crypto modules:  crypt3 was broken, because
decrypt_msg didn't increment the pt (plaintext) pointer. A lot of
the node ups/downs are due to nodes trying to contact each other
with crypt3, only to realize that they can't talk to each other.

crypt1 was broken, too, because the crypt1_next() function was not
incrementing the current index. I also changed the code that does
the "rotation" of the key and inlined it into crypt1_next(). The
module passes the diehard tests - I only ran a few, though.

The other change is about routing. A node's "destination fingerprint"
is modified so that it has 6 peaks instead of only 4. The "destination
fingerprint" is kept in the store/version file and is mixed to the
real fingerprint 50:50, so this change should make some nodes prefer
routes that were just under the limit before.

New stores will be created with a destination fingerprint with 6
peaks right from the start; nodes wit data stores that are almost
full will most likely see next to no change in the visible fingerprint,
or only a slow change over time. That doesn't hurt, as long as we
get a good average routing across all nodes.
This commit is contained in:
Thomas Klausner 2003-12-27 15:59:50 +00:00
parent f8241ae975
commit 357a0b781e
2 changed files with 5 additions and 5 deletions

View file

@ -1,4 +1,4 @@
# $NetBSD: Makefile,v 1.41 2003/12/18 14:45:02 tvierling Exp $
# $NetBSD: Makefile,v 1.42 2003/12/27 15:59:50 thomasklausner Exp $
#
DISTNAME= entropy-${ENTROPY_VERSION}
@ -17,7 +17,7 @@ GNU_CONFIGURE= yes
USE_BUILDLINK2= yes
USE_GMAKE= yes
ENTROPY_VERSION= 0.7.2-388
ENTROPY_VERSION= 0.7.2-395
CONFIGURE_ARGS+= --enable-verbose

View file

@ -1,5 +1,5 @@
$NetBSD: distinfo,v 1.42 2003/12/18 14:45:02 tvierling Exp $
$NetBSD: distinfo,v 1.43 2003/12/27 15:59:50 thomasklausner Exp $
SHA1 (entropy-0.7.2-388.tgz) = 51992eeac9e86efe9c7d621aae6e09991b6e0673
Size (entropy-0.7.2-388.tgz) = 773189 bytes
SHA1 (entropy-0.7.2-395.tgz) = 55bf1f3be0c065196dee37e2a8ef00f1df91729c
Size (entropy-0.7.2-395.tgz) = 780045 bytes
SHA1 (patch-ac) = 3651aec19ae8e079217121de231467a30fb1f73a