This is an automated email from the ASF dual-hosted git repository. kfujino pushed a commit to branch 7.0.x in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/7.0.x by this push: new eff5de3 Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=64043 eff5de3 is described below commit eff5de39a64bddbf8784919b3ff30c7fc254f777 Author: KeiichiFujino <kfuj...@apache.org> AuthorDate: Mon Jan 13 00:09:10 2020 +0900 Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=64043 --- .../apache/catalina/ha/session/DeltaManager.java | 33 +++++++++++++++++++++- webapps/docs/changelog.xml | 8 ++++++ 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/java/org/apache/catalina/ha/session/DeltaManager.java b/java/org/apache/catalina/ha/session/DeltaManager.java index 6531c60..036c8fe 100644 --- a/java/org/apache/catalina/ha/session/DeltaManager.java +++ b/java/org/apache/catalina/ha/session/DeltaManager.java @@ -506,7 +506,38 @@ public class DeltaManager extends ClusterManagerBase{ @Override public void changeSessionId(Session session) { - changeSessionId(session, true); + rotateSessionId(session); + } + + @Override + public String rotateSessionId(Session session) { + return rotateSessionId(session, true); + } + + public String rotateSessionId(Session session, boolean notify) { + // original sessionID + String orgSessionID = session.getId(); + String newId = super.rotateSessionId(session); + if (notify && cluster.getMembers().length > 0) { + // changed sessionID + String newSessionID = session.getId(); + try { + // serialize sessionID + byte[] data = serializeSessionId(newSessionID); + // notify change sessionID + SessionMessage msg = new SessionMessageImpl(getName(), + SessionMessage.EVT_CHANGE_SESSION_ID, data, + orgSessionID, orgSessionID + "-" + + System.currentTimeMillis()); + msg.setTimestamp(System.currentTimeMillis()); + counterSend_EVT_CHANGE_SESSION_ID++; + send(msg); + } catch (IOException e) { + log.error(sm.getString("deltaManager.unableSerializeSessionID", + newSessionID), e); + } + } + return newId; } public void changeSessionId(Session session, boolean notify) { diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index 95cb2f2..86eb1aa 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -101,6 +101,14 @@ </fix> </changelog> </subsection> + <subsection name="Cluster"> + <changelog> + <fix> + <bug>64043</bug>: Ensure that session ID changes are replicated during + form-authentication. (kfujino) + </fix> + </changelog> + </subsection> </section> <section name="Tomcat 7.0.99 (violetagg)" rtext="released 2019-12-17"> <subsection name="Catalina"> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org