From f69c0998eae8d9763113cb6cdff313d64b892ae7 Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 12 Nov 2016 20:10:58 +0000 Subject: [PATCH] Susimail: Fix nonce error on login after logout Fix internal error after cancel button on settings form when not logged in --- apps/susimail/src/src/i2p/susi/webmail/WebMail.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/apps/susimail/src/src/i2p/susi/webmail/WebMail.java b/apps/susimail/src/src/i2p/susi/webmail/WebMail.java index f941a8810..4da8c680e 100644 --- a/apps/susimail/src/src/i2p/susi/webmail/WebMail.java +++ b/apps/susimail/src/src/i2p/susi/webmail/WebMail.java @@ -87,6 +87,7 @@ public class WebMail extends HttpServlet private static final int version = 13; private static final long serialVersionUID = 1L; + private static final String LOGIN_NONCE = Long.toString(I2PAppContext.getGlobalContext().random().nextLong()); private static final String DEFAULT_HOST = "127.0.0.1"; private static final int DEFAULT_POP3PORT = 7660; @@ -466,6 +467,8 @@ public class WebMail extends HttpServlet /** @since 0.9.27 */ public boolean isValidNonce(String nonce) { + if (state == STATE_AUTH && LOGIN_NONCE.equals(nonce)) + return true; synchronized(nonces) { return nonces.contains(nonce); } @@ -856,7 +859,7 @@ public class WebMail extends HttpServlet } sessionObject.info += _t("User logged out.") + '\n'; sessionObject.state = STATE_AUTH; - } else if( sessionObject.mailbox == null ) { + } else if( sessionObject.mailbox == null && !buttonPressed(request, CANCEL)) { sessionObject.error += _t("Internal error, lost connection.") + '\n'; sessionObject.state = STATE_AUTH; } @@ -1797,7 +1800,8 @@ public class WebMail extends HttpServlet out.println(""); } out.print("\n" : ">")); - String nonce = Long.toString(ctx.random().nextLong()); + String nonce = sessionObject.state == STATE_AUTH ? LOGIN_NONCE : + Long.toString(ctx.random().nextLong()); sessionObject.addNonce(nonce); out.println( "
\"Susimail\"
\n" +