change, by querying the config instead of StatSummarizer to
determine if a stat is graphed.
- Don't append to a string in a loop
- parseConfig() return a Set instead of List to avoid O(n**2) behavior
when deteriming config changes
- Check blacklist/whitelist before connection limits, so
a blacklisted peer does not increment the counters
- Don't increment total throttle if peer is throttled
- Fix blacklist NPE after config change (ticket #1070)
Route connections to specific targets based on incoming I2P port
with custom option targetForPort.xxxx=myserver:yyyy
This allows multiple services on a single server tunnel (ticket #1066)
- Allow host:port targets; set defaults in i2ptunnel.config (ticket #1066)
- Don't fail start if hostname is unresolvable; retry at connect time (ticket #946)
- Output IRC message on connect fail
- Update target list on-the-fly when configuration changes
move cert location to certificates/i2cp.
* I2PTunnel: Support SSL for connection to local server
for Standard, HTTP, and IRC server tunnels.
Put server cert in certificates/i2ptunnel if necessary.
- Make I2PSocketFull.close() nonblocking; it will now cause any user-side
writes blocked in I/O (Connection.packetSendChoke()) to throw
an exception (tickets #629, #1041)
- Don't ignore InterruptedExceptions; throw InterruptedIOException
- Back out static disconnect exception
- MessageInputStream locking fixes
- Cleanups
I2PSnark:
- Close socket before closing output stream to avoid blocking in
Peer.disconnect(), and prevent Peer.disconnect() loop
- Combine getPeers and announce into a single method, as we must announce to
the closest from the getPeers, not the closest from the kbuckets
- Stop getPeers when nothing closer is found
- Increase dest lookup and search timeouts
- Increase max search depth
- Loop tracker client faster when in magnet mode
- Loop tracker client faster if DHT announce fails
- Don't return an empty peers list if we only know about the requestor
- volatiles, log tweaks
- Major fixes of getPeers() to follow