diff options
author | Ingela Anderton Andin <[email protected]> | 2011-11-15 10:21:25 +0100 |
---|---|---|
committer | Ingela Anderton Andin <[email protected]> | 2011-11-15 11:07:11 +0100 |
commit | 93c099b6a02ba8c98392a69d6224e3bfe3c69c8e (patch) | |
tree | 0293358721d9c295218e3f62f9bbd5fa7e04328e /lib/ssl/src/ssl_session.erl | |
parent | e33d0c96674874270d879b7b2df17cff0606a94b (diff) | |
download | otp-93c099b6a02ba8c98392a69d6224e3bfe3c69c8e.tar.gz otp-93c099b6a02ba8c98392a69d6224e3bfe3c69c8e.tar.bz2 otp-93c099b6a02ba8c98392a69d6224e3bfe3c69c8e.zip |
Improved session cleanup handling
Added session status "new" to mark sessions that are
in the session database to reserve the session id
but not resumable yet and that we want to separate from
sessions that has been invalidated for further reuse.
Diffstat (limited to 'lib/ssl/src/ssl_session.erl')
-rw-r--r-- | lib/ssl/src/ssl_session.erl | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/lib/ssl/src/ssl_session.erl b/lib/ssl/src/ssl_session.erl index bf738649f6..df5d7e0146 100644 --- a/lib/ssl/src/ssl_session.erl +++ b/lib/ssl/src/ssl_session.erl @@ -103,9 +103,9 @@ select_session([], _, _) -> select_session(Sessions, #ssl_options{ciphers = Ciphers, reuse_sessions = ReuseSession}, OwnCert) -> - IsResumable = - fun(Session) -> - ReuseSession andalso (Session#session.is_resumable) andalso + IsResumable = + fun(Session) -> + ReuseSession andalso resumable(Session#session.is_resumable) andalso lists:member(Session#session.cipher_suite, Ciphers) andalso (OwnCert == Session#session.own_certificate) end, @@ -147,10 +147,10 @@ is_resumable(SuggestedSessionId, Port, ReuseEnabled, ReuseFun, Cache, #session{cipher_suite = CipherSuite, own_certificate = SessionOwnCert, compression_method = Compression, - is_resumable = Is_resumable, + is_resumable = IsResumable, peer_certificate = PeerCert} = Session -> ReuseEnabled - andalso Is_resumable + andalso resumable(IsResumable) andalso (OwnCert == SessionOwnCert) andalso valid_session(Session, SecondLifeTime) andalso ReuseFun(SuggestedSessionId, PeerCert, @@ -158,3 +158,8 @@ is_resumable(SuggestedSessionId, Port, ReuseEnabled, ReuseFun, Cache, undefined -> false end. + +resumable(new) -> + false; +resumable(IsResumable) -> + IsResumable. |