-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Mark,

On 12/11/19 12:52, Mark Thomas wrote:
> On 11/12/2019 17:46, Christopher Schultz wrote: Mark,
> 
> On 12/7/19 17:30, ma...@apache.org wrote:
>>>> This is an automated email from the ASF dual-hosted git 
>>>> repository.
>>>> 
>>>> markt pushed a commit to branch 7.0.x in repository 
>>>> https://gitbox.apache.org/repos/asf/tomcat.git
>>>> 
>>>> commit c06674e09e9f3f43dc0e5c022dc8c311a4285cfd Author: Mark
>>>> Thomas <ma...@apache.org> AuthorDate: Fri Dec 6 12:13:15 2019
>>>> +0000
>>>> 
>>>> Add an atomic method to rotate session ID and return new
>>>> value.
>>>> 
>>>> Use it where possible.
> 
> Shouldn't there be a "synchronized" keyword somewhere in there?
> 
>> Not to solve the problem the commit was intended to solve.
> 
>> Maybe the commit message wasn't worded in the best way to
>> describe what was going on.
> 
>> The key thing here is that the new session ID that was created as
>> a result of this call is the one that is returned to the caller.

Ack.

Thanks,
- -chris

>>>> --- java/org/apache/catalina/connector/Request.java   | 27 
>>>> +++++++++++++++++++++++ 
>>>> java/org/apache/catalina/session/ManagerBase.java | 15 
>>>> +++++++++++-- 2 files changed, 40 insertions(+), 2
>>>> deletions(-)
>>>> 
>>>> diff --git a/java/org/apache/catalina/connector/Request.java 
>>>> b/java/org/apache/catalina/connector/Request.java index 
>>>> a0726ee..ab4e5f0 100644 --- 
>>>> a/java/org/apache/catalina/connector/Request.java +++ 
>>>> b/java/org/apache/catalina/connector/Request.java @@ -74,6
>>>> +74,7 @@ import org.apache.catalina.core.ApplicationPart;
>>>> import 
>>>> org.apache.catalina.core.ApplicationSessionCookieConfig;
>>>> import org.apache.catalina.core.AsyncContextImpl; import 
>>>> org.apache.catalina.realm.GenericPrincipal; +import 
>>>> org.apache.catalina.session.ManagerBase; import 
>>>> org.apache.catalina.util.ParameterMap; import 
>>>> org.apache.catalina.util.RequestUtil; import 
>>>> org.apache.catalina.util.StringParser; @@ -2702,6 +2703,32
>>>> @@ public class Request implements HttpServletRequest { }
>>>> 
>>>> 
>>>> +    public String changeSessionId() { + +        Session
>>>> session = this.getSessionInternal(false); +        if
>>>> (session == null) { + throw new IllegalStateException( + 
>>>> sm.getString("coyoteRequest.changeSessionId")); +        } +
>>>> + Manager manager = this.getContext().getManager(); + +
>>>> String newSessionId = rotateSessionId(manager, session); + 
>>>> this.changeSessionId(newSessionId); + +        return 
>>>> newSessionId; +    } + +    private String
>>>> rotateSessionId(Manager manager, Session session) { +
>>>> if (manager instanceof ManagerBase) { +            return
>>>> ((ManagerBase) manager).rotateSessionId(session); +        }
>>>> else { + // Best we do with the current interface + 
>>>> manager.changeSessionId(session); +            return 
>>>> session.getId(); +        } +    } + /** * @return the
>>>> session associated with this Request, creating one * if
>>>> necessary and requested. diff --git 
>>>> a/java/org/apache/catalina/session/ManagerBase.java 
>>>> b/java/org/apache/catalina/session/ManagerBase.java index 
>>>> e4121a6..8022d08 100644 --- 
>>>> a/java/org/apache/catalina/session/ManagerBase.java +++ 
>>>> b/java/org/apache/catalina/session/ManagerBase.java @@
>>>> -851,9 +851,20 @@ public abstract class ManagerBase extends 
>>>> LifecycleMBeanBase implements Manager
>>>> 
>>>> @Override public void changeSessionId(Session session) { + 
>>>> rotateSessionId(session); +    } + + +    public String 
>>>> rotateSessionId(Session session) { +        String newId = 
>>>> generateSessionId(); +        changeSessionId(session,
>>>> newId); + return newId; +    } + + +    public void
>>>> changeSessionId(Session session, String newId) { String oldId
>>>> = session.getIdInternal(); - 
>>>> session.setId(generateSessionId(), false); -        String
>>>> newId = session.getIdInternal(); +
>>>> session.setId(newId, false); 
>>>> container.fireContainerEvent(Context.CHANGE_SESSION_ID_EVENT,
>>>> new String[] {oldId, newId}); }
>>>> 
>>>> 
>>>> -------------------------------------------------------------------
- --
>>>>
>>>>
>
>>>> 
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
>>>> For additional commands, e-mail: dev-h...@tomcat.apache.org
>>>> 
>> 
>> ---------------------------------------------------------------------
>>
>> 
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
>> For additional commands, e-mail: dev-h...@tomcat.apache.org
>> 
> 
> ---------------------------------------------------------------------
>
> 
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: dev-h...@tomcat.apache.org
> 
-----BEGIN PGP SIGNATURE-----
Comment: Using GnuPG with Thunderbird - https://www.enigmail.net/

iQIzBAEBCAAdFiEEMmKgYcQvxMe7tcJcHPApP6U8pFgFAl3xQToACgkQHPApP6U8
pFg/5BAApLUOHwQXbBxEkEshvmLw/slDMXihnR/ZP5tQuujjnwcjMmGNCTEgdxtI
cMDfRLYBiXhF3T+lOGrdFCnnTHEvXFg3Pbspy5FZobK8vvgR4JOqZa5liYGPG6iq
62b9U2zrMPDihwBQ/qOCD5TwP+r6MeOC1MrLEwWZfCAM+TZlTSZqg6A+M2HMWdj9
X0BR+H2vaUy8m9MrC0TQXYDfYKsJXTOWLHNG7+WviWNN6LJXywxVeaie7X4x687g
hQOvZIu5wU4dcsHUbcH+8Eo1G2HeG9Y61YL2EvzWtDwJ9CF3sX68EV12wDl1oV5M
hEljbWrMuoZrt4/WDIW4QndUUsVJNxTJDnhYxGjocD3o58CI2QcUbhjN7qT3rAWN
4MJtOIGr4HoPDhKbPskibi+yJvK7DLSp5C0xwE+mJFC7vwng3NTchvkhjls7YMs5
MAEUgDOgSP+Nipa6h89WCtzxO557D10dLhdVuqfCeiXcDMOMR8cHz9zel2hfmtHI
4d4WSY+laNnJOxlB1oXMkgmnGicFWz09Hk5jvth+0gkge9+32z9AQ16kcCUGvT5M
i61Vat/tAy9FLf32TFXRVubYLprsRFJRYy/GypBKMIA3Ob3JJ9392bDkcT9F8t9o
6ob43RjrYz1rU7TN13yBz5lyfmkml5BdQiXSm1jm7lgy+gaA9k8=
=zJ3K
-----END PGP SIGNATURE-----

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to