Commit Graph

23 Commits

Author SHA1 Message Date
jrandom
ff0023a889 big ol' memory, cpu usage, and shutdown handling update. main changes include:
* rather than have all jobs created hooked into the clock for offset updates, have the jobQueue stay hooked up and update any active jobs accordingly (killing a memory leak of a JobTiming objects - one per job)
* dont go totally insane during shutdown and log like mad (though the clientApp things still log like mad, since they don't know the router is going down)
* adjust memory buffer sizes based on real world values so we don't have to expand/contract a lot
* dont display things that are completely useless (who cares what the first 32 bytes of a public key are?)
* reduce temporary object creation
* use more efficient collections at times
* on shutdown, log some state information (ready/timed jobs, pending messages, etc)
* explicit GC every 10 jobs.  yeah, not efficient, but just for now we'll keep 'er in there
* only reread the router config file if it changes (duh)
2004-05-16 04:54:50 +00:00
jrandom
07b6a8ba92 if we lose our I2CP connection to the router, die hard and fast.
(only relevent for people whose socket manager / i2ptunnel / etc are located remote from the router)
2004-05-07 07:01:26 +00:00
jrandom
f772d6ddeb /me reboots brain, understands, and thanks mihi 2004-05-07 04:19:43 +00:00
mihi
4021deec7f poke jrandom's eyes into the semantic of an "else" clause
(you may remove both comments when you understood it)

[mihi]
2004-05-07 03:10:57 +00:00
mihi
a3977f37f7 javadoc, no functional changes 2004-05-07 03:06:41 +00:00
jrandom
766c12242e logging, javadoc 2004-05-07 01:45:12 +00:00
jrandom
a82b951aff made private things that don't need to be public
remove semantic inconsistency wrt getRemoteId(false) - it shouldn't ever timeout, since it always returns immediately
javadoc (though i wish i understood the close/close2/sendClose more clearly so i could javadoc that process)
2004-05-07 01:32:48 +00:00
jrandom
691326cea8 make sure we kill the threads that failed to ACK, rather than leave them sitting there, waiting forever
logging
2004-05-04 08:09:28 +00:00
jrandom
3cac1238ed handle reclose, logging, more clear notification 2004-05-04 05:53:11 +00:00
jrandom
3a4d0549aa add accept timeouts (default is that if the server doesnt .accept() in 5s, refuse the con)
add unique IDs to the various threads for logging / tracing purposes
2004-05-04 04:44:05 +00:00
jrandom
d7467f5dc3 disconnect isn't an error 2004-05-04 01:58:37 +00:00
jrandom
60584228d9 refactored packet handling into type specific methods
removed nested synchronization (which had been causing undetected deadlocks)
made sync blocks smaller, though this may have opened holes related to
resent ACK/SYN/CLOSE packets that are delivered in a race.  I'm not as
fluent in the ministreaming lib code as i should be (yet), but duck's thread
dumps were showing hundreds of threads waiting on a lock that'll never get
released (since the only way to release it would be to receive another
packet, and no more packets can be received until the lock is released, etc)
also, I2PSession is threadsafe - i can see no reason to synchronize on it
(and it was being synchronized on only part of the time?)
also, refactored the charset encoding stuff and minor log tweaking
i've been testing this for the last hour or so, on eepsites and squid (large
and small files), as well as irc, and there haven't been any glitches.  but
it needs more testing before it can be released, obviously.
2004-05-03 03:34:25 +00:00
human
d7c3a53f2d Initial implementation of read() timeout on I2PSocket. Let's see whether it
could solve duck's problems with dangling threads...
(human)
2004-04-21 17:56:16 +00:00
human
8038e1ee7d I2PSocketManager.connect() should have thrown InterruptedIOException, and *not*
InterruptedException (oops!)
(human)
2004-04-20 15:38:55 +00:00
human
fb170e3c42 * Made I2PSocketManager.connect() throw several kinds of exceptions, for
better error reporting;
* Added an I2PSocketManager.destroySocketManager() method, that closes all
  the managed sockets and destroys the associated I2PSession.
(human)
2004-04-19 21:45:04 +00:00
human
031338d84d First step for the "connection refused" concept: incoming connections
won't be accepted until the server app actually requires an I2PServerSocket
from the I2PSocketManager.
It allows both to add a little bit of functionality, and to fix a nasty bug: it
was possible to hang an app that connects through the I2PSocketManager but
actually doesn't accept() connections (if 2 connection requests were sent
to the app, the I2PSocketManager got stuck waiting forever on
I2PServerSocketImpl.getNewSocket()).
2004-04-16 03:31:13 +00:00
human
2a619f3fba Slightly updated specs
(human)
2004-04-16 03:22:37 +00:00
human
d2b09ecfda * Fixed race that (maybe) caused the problems reported by aum on
<http://dev.i2p.net/pipermail/i2p/2004-April/000214.html>;
* slightly revised locking;
* made accept() throw a ConnectException when the I2PServerSocket is closed.
(human)
2004-04-14 15:28:02 +00:00
shendaras
51c49d7c1b format (shendaras) 2004-04-10 11:50:11 +00:00
shendaras
8a8e68146f beginning of format, updated imports. (shendaras) 2004-04-10 11:39:00 +00:00
jrandom
f37c0ed612 name all threads, and (nearly) always use I2PThread (in case we add some pooling/throttling/monitoring or whatnot later) 2004-04-09 01:22:04 +00:00
mihi
e56dcba9d3 update protocol (formal things)
[mihi]
2004-04-08 18:23:48 +00:00
cvs_import
77bd69c5e5 beginning of branch i2p.i2p.i2p 2004-04-08 04:41:54 +00:00