14b9f9509f
* allow the client subsystem to tell the clientMessagePool that a message is definitely remote (since the client subsystem should know). this reduces the churn of the message pool asking all over again
...
* add a new ClientWriterRunner thread (1 per I2CP connection) so that a client application that hangs or otherwise doesn't read from its i2cp socket quickly doesn't hang the whole router (since we've previously used the jobQueue for pushing I2CP messages). This may or may not clear the intermittent eepsite bug, but I'm not counting on it to (yet).
* update various points to deal with the client writer's operation (aka doSend won't throw IOException)
* logging
* lots and lots of metrics (yeah i know some of them vary based on the compiler)
2004-06-22 04:41:31 +00:00
b1f973d304
during initial router startup, we may try to publish "my.info" before the netDb/ dir is created, so lets make sure
2004-06-22 04:31:25 +00:00
2f17bfd71c
minor refactoring. i hate how large that method is, but beyond the essential stuff, its pretty much just logging and benchmarking.
...
plus, yeah, this method still takes too long in some situations. working on identifying why...
2004-06-22 04:29:28 +00:00
b6670ee23a
lets see how fast this can theoretically go (leaving simulated delays to other components)
2004-06-22 04:26:56 +00:00
f1036df1f6
new debugging data point
2004-06-22 04:25:24 +00:00
5c3e815757
dummy DSA (for sim - dont run on live net)
2004-06-22 04:23:19 +00:00
55e780d885
logging and doc of a todo (wrt bestEffort)
2004-06-22 04:16:17 +00:00
d502df7d56
Make this compile straight out of CVS (you have to have libtomcrypt compiled in a libtomcrypt-0.96 directory in your home directory)
2004-06-21 08:21:17 +00:00
beb6cc8c0f
the journey of a thousand miles begins with a single step :-)
2004-06-21 07:57:11 +00:00
c99db5e75c
change preprocessor conditional to check for 1/0 instead of true/false
2004-06-21 07:50:33 +00:00
65cd70a85b
LibSAM
2004-06-20 11:44:53 +00:00
5166eab5ee
replaced double check locking ( http://www.javaworld.com/javaworld/jw-02-2001/jw-0209-double.html ) with the actual logic
...
- prepare the cache prior to use if you want to have the hash cache.
also fix the ejection policy to not clear the cache, but merely to remove sufficient values.
though maybe clearing the cache is the right thing to do so as to avoid ejection churn... hmm.
both of these fixes brought to you by the keen eyes of the one called mihi
2004-06-20 04:27:58 +00:00
232f6f158d
removed (likely already ignored by the compiler) op. force of habit from dealing with stream.read() i suppose.
...
thanks mihi
2004-06-20 03:48:16 +00:00
2a07ceba62
a message send failure is no reason to drop the SAM session
...
for style=stream, tell the client the stream failed, and kill the virtual connection..
for raw and repliable datagrams, just carry on our merry way
2004-06-20 01:49:07 +00:00
3e4b8c7dd4
more stats
2004-06-20 01:45:25 +00:00
26138e213f
new method - processingComplete(), which functions much just like OutNetMessage's discardData()
...
so drop the data when called, updating the MessageStateMonitor (and also telling the monitor on finalization, just cuz)
2004-06-20 01:40:12 +00:00
d82796e3ad
note that we've successfully processed a message (and as such drop its payload) ASAP, and only use safely cached snippets of it afterwards
2004-06-20 01:37:01 +00:00
cdcb81c867
dont be so aggressive about waking up more jobs, since this just causes excess locking when we dont need it
2004-06-20 01:34:16 +00:00
5669e8f060
deal with discarded payloads and use the cached version
2004-06-20 01:31:23 +00:00
d84a40b4dc
add some randomization to the startup time, so we're not too synchronous
...
also don't shut down so quickly, as the routers may dump some useful stats when they die a horrible death
2004-06-20 01:29:00 +00:00
591be43763
default to building more tunnels, because tunnels r k00l
...
(and fix the arg parsing)
2004-06-20 01:26:59 +00:00
97d0686354
new method: discardData() to be called as soon as we dont need the payload of a message anymore (but may still need the associated jobs/etc)
...
check in with the MessageStateMonitor, and cache some key attributes from the message (type, unique id, size, etc)
2004-06-20 01:21:24 +00:00
e2da05b197
more accurrate (but less lively) bandwidth rate calculation (since we dont necessarily calculate exactly on the edge of a measurement period, we use the data from the last full period)
...
logging on OOM
2004-06-20 01:18:31 +00:00
4f0052043d
/me waves to our new friend, the MessageStateMonitor, which keeps track of how many messages we're dealing with in memory (and whether they've been processed & discarded yet)
2004-06-20 01:15:01 +00:00
cfc1d1a2db
publish some new stats, including the bandwidth usage (as always, routers can chose not to publish these stats)
2004-06-20 01:12:14 +00:00
9957e6ef17
keep track of how many messages are processed in the tunnel
2004-06-20 01:09:04 +00:00
6a02c8383c
the data is hopefully discarded by now, so dont try to get at it
2004-06-20 01:02:03 +00:00
bc0a4ee68d
discard the data ASAP, and make sure we access only the safely cached snippets of it as necessary
2004-06-20 00:59:33 +00:00
1ca615da77
InNetMessage gets a context
2004-06-20 00:57:02 +00:00
7da0cee29a
turned BandwidthLimiter into an interface, removed some of its teeth, and cleaned up TrivialBandwidthLimiter
2004-06-20 00:56:04 +00:00
f25bccd19f
add some stats for the simulator (data doesnt seem that interesting, so i havent moved them to the CommSystemImpl)
...
use the .discardData() functionality
2004-06-20 00:53:19 +00:00
4e5a2e012c
update since bw limiter interface changed (but dont bother to use it anymore here)
...
i wonder if i should remove the phttp transport now or keep it around in case it gets revived...
2004-06-20 00:50:38 +00:00
c9ee2a92a3
dont buffer the reads, since we dont want that buffer to interfere with either the bandwidth limiting or the AES decryption
...
logging
2004-06-20 00:46:57 +00:00
95a7938328
reduce the max slice time (aka max time to pump out a message + some cleanup) to 60 seconds
...
close connections to peers who are so slow that they leave messages on the queue to expire
reduce the default max queue size per connection to 10 messages
(as always, this is a configurable param, via "i2np.tcp.maxQueuedMessages" in router.config)
2004-06-20 00:44:43 +00:00
baedcdb2c1
handle situations where people dont specify a client name for a client app
2004-06-20 00:40:16 +00:00
bc06b3671a
whenever a tunnel completes, log how many messages we passed through it in the stats:
...
tunnel.inboundMessagesProcessed
tunnel.outboundMessagesProcessed
tunnel.participatingMessagesProcessed
(for the various tunnel types)
2004-06-20 00:35:52 +00:00
a9172811ca
reduce the grace period from 5 to 2 minutes, which will cause us to test peers more often
...
also add some logging (log level == debug will display why we mark a peer as failing)
2004-06-20 00:31:20 +00:00
91b1fd6d07
InNetMessage now needs a reference to a context, so give it one
2004-06-20 00:26:05 +00:00
bab7b8b9ed
discard the payload of a message ASAP (even though we may need to hang on to the message for a while, for its replyJob, etc)
...
take note of the fact that the tunnel had activity
minor logging and formatting updates
2004-06-20 00:24:06 +00:00
1b7fb96ca8
dont expose a method we dont need to expose
2004-06-20 00:19:38 +00:00
6d84b8c02f
1) use cachedXor to cut down on the, uh, xor-ing (which involves at least one new byte[32])
...
2) implement an optimized 'should contain' algorithm, rather than being a wuss and building + comparing a BigInteger of the xor.
3) more unit tests
this stuff is called a *lot*, since we need to pick what bucket things go in all the time.
2004-06-20 00:18:28 +00:00
3e3749f011
added some unit tests (adding the local key (delta == 0x00) and adding 1000 random keys, all making sure nothing b0rks)
2004-06-20 00:13:05 +00:00
52384fb3a5
persist the local router's info @ netDb/my.info in addition to under netDb/routerInfo-$hash.dat
...
this makes it easy for harvesting with simulations
2004-06-20 00:11:23 +00:00
e401670087
i like logging, dont you like logging?
2004-06-20 00:08:59 +00:00
ae0b4c59cc
include the port # in the thread name, and logging
2004-06-20 00:07:37 +00:00
0a8dc8afcc
logging, its whats for dinner
2004-06-20 00:06:33 +00:00
d59b94df66
logging, deal with times when a client doesnt have a destination yet
2004-06-20 00:05:30 +00:00
e28502454b
include the port in the thread name (useful for the sim)
2004-06-20 00:03:45 +00:00
bbf73f0937
enforce some sanity checks on the payload size. see recent rant in DatabaseSearchReplyMessage commit for why
...
this is necessary.
2004-06-19 23:58:24 +00:00
592519c45c
somehow some people are getting situations where the payload doesnt decompress. wtf?
...
do i need to wrap the Input/Output streams we use to pipe data over the net with a verification wrapper for the messages?
e.g. prefix the serialization of all I2NPMessages sent on the wire with the SHA256 of that serialization and verify on read?
Ho hum, dunno. maybe its something else, but the ElG/AES+SessionTag already has integrity verification so the only thing I can
think of is a checksum error that got past TCP's checking and corrupted the AES stream.
2004-06-19 23:56:41 +00:00