propagate from branch 'i2p.i2p' (head 72c44737466e553fec443a79fffa7636894fe383)

to branch 'i2p.i2p.str4d.cleanup' (head 5a2425d7523b732840e55039f88cea5699f1aa83)
This commit is contained in:
str4d
2013-11-24 01:20:11 +00:00
9 changed files with 40 additions and 12 deletions

View File

@ -263,6 +263,8 @@ public abstract class I2PTunnelClientBase extends I2PTunnelTask implements Runna
getTunnel().removeSession(sess);
if (_log.shouldLog(Log.WARN))
_log.warn(getTunnel().getClientOptions().getProperty("inbound.nickname") + ": Built a new destination on resume");
// make sure the old one is closed
sockMgr.destroySocketManager();
newManager = true;
} // else the old socket manager will reconnect the old session if necessary
}
@ -320,6 +322,8 @@ public abstract class I2PTunnelClientBase extends I2PTunnelTask implements Runna
if (_log.shouldLog(Log.INFO))
_log.info(tunnel.getClientOptions().getProperty("inbound.nickname") + ": Building a new socket manager since the old one closed [s=" + s + "]");
tunnel.removeSession(s);
// make sure the old one is closed
socketManager.destroySocketManager();
// We could be here a LONG time, holding the lock
socketManager = buildSocketManager(tunnel, pkf);
} else {

View File

@ -1281,10 +1281,15 @@ public class WebMail extends HttpServlet
if( sessionObject.state == STATE_SHOW ) {
processMessageButtons( sessionObject, request );
Mail mail = sessionObject.mailCache.getMail( sessionObject.showUIDL, MailCache.FETCH_ALL );
if( mail != null && mail.error.length() > 0 ) {
sessionObject.error += mail.error;
mail.error = "";
// If the last message has just been deleted then
// sessionObject.state = STATE_LIST and
// sessionObject.showUIDL = null
if ( sessionObject.showUIDL != null ) {
Mail mail = sessionObject.mailCache.getMail( sessionObject.showUIDL, MailCache.FETCH_ALL );
if( mail != null && mail.error.length() > 0 ) {
sessionObject.error += mail.error;
mail.error = "";
}
}
}

View File

@ -1,5 +1,10 @@
2013-11-19 kytv
2013-11-23 zzz
* i2ptunnel: Clean up old timer threads
2013-11-23 str4d
* susimail: Fix NPE when deleting last message (ticket #414)
2013-11-19 kytv
* Translation updates and start of Japanese translation pulled from Transifex
2013-11-14 kytv

View File

@ -18,7 +18,7 @@ public class RouterVersion {
/** deprecated */
public final static String ID = "Monotone";
public final static String VERSION = CoreVersion.VERSION;
public final static long BUILD = 30;
public final static long BUILD = 31;
/** for example "-test" */
public final static String EXTRA = "-rc";

View File

@ -156,7 +156,7 @@ class IterativeSearchJob extends FloodSearchJob {
_toTry.remove(_key);
if (_toTry.isEmpty()) {
if (_log.shouldLog(Log.WARN))
_log.warn(getJobId() + ": Iterative search for " + _key + " had no peers to send to");
_log.warn(getJobId() + ": ISJ for " + _key + " had no peers to send to");
// no floodfill peers, fail
failed();
return;
@ -168,7 +168,9 @@ class IterativeSearchJob extends FloodSearchJob {
Job onTimeout = new FloodOnlyLookupTimeoutJob(getContext(), this);
_out = getContext().messageRegistry().registerPending(replySelector, onReply, onTimeout, _timeoutMs);
if (_log.shouldLog(Log.INFO))
_log.info(getJobId() + ": Iterative search for " + _key + " (rkey " + _rkey + ") timeout " +
_log.info(getJobId() + ": New ISJ for " +
(_isLease ? "LS " : "RI ") +
_key + " (rkey " + _rkey + ") timeout " +
DataHelper.formatDuration(_timeoutMs) + " toTry: " + DataHelper.toString(_toTry));
retry();
}
@ -251,8 +253,13 @@ class IterativeSearchJob extends FloodSearchJob {
dlm.setReplyTunnel(replyTunnel.getReceiveTunnelId(0));
dlm.setSearchKey(_key);
if (_log.shouldLog(Log.INFO))
_log.info(getJobId() + ": Iterative search for " + _key + " to " + peer);
if (_log.shouldLog(Log.INFO)) {
int tries;
synchronized(this) {
tries = _unheardFrom.size() + _failedPeers.size();
}
_log.info(getJobId() + ": ISJ try " + tries + " for " + _key + " to " + peer);
}
long now = getContext().clock().now();
_sentTime.put(peer, Long.valueOf(now));
@ -270,6 +277,13 @@ class IterativeSearchJob extends FloodSearchJob {
dlm.setReplySession(sess.key, sess.tag);
}
outMsg = MessageWrapper.wrap(getContext(), dlm, ri);
// ElG can take a while so do a final check before we send it,
// a response may have come in.
if (_dead) {
if (_log.shouldLog(Log.DEBUG))
_log.debug(getJobId() + ": aborting send, finished while wrapping msg to " + peer);
return;
}
if (_log.shouldLog(Log.DEBUG))
_log.debug(getJobId() + ": Encrypted DLM for " + _key + " to " + peer);
}
@ -375,7 +389,7 @@ class IterativeSearchJob extends FloodSearchJob {
long time = System.currentTimeMillis() - _created;
if (_log.shouldLog(Log.INFO)) {
long timeRemaining = _expiration - getContext().clock().now();
_log.info(getJobId() + ": Iterative search for " + _key + " failed with " + timeRemaining + " remaining after " + time +
_log.info(getJobId() + ": ISJ for " + _key + " failed with " + timeRemaining + " remaining after " + time +
", peers queried: " + tries);
}
getContext().statManager().addRateData("netDb.failedTime", time, 0);
@ -410,7 +424,7 @@ class IterativeSearchJob extends FloodSearchJob {
}
long time = System.currentTimeMillis() - _created;
if (_log.shouldLog(Log.INFO))
_log.info(getJobId() + ": Iterative search for " + _key + " successful after " + time +
_log.info(getJobId() + ": ISJ for " + _key + " successful after " + time +
", peers queried: " + tries);
getContext().statManager().addRateData("netDb.successTime", time, 0);
getContext().statManager().addRateData("netDb.successRetries", tries - 1, 0);