@@ -23,8 +23,7 @@ def find_session(req, sid)
23
23
if req . session . options [ :skip ]
24
24
[ generate_sid , { } ]
25
25
else
26
- session = find_session_data ( req , sid )
27
- unless session
26
+ unless sid and session = @lock . get_session_data ( req . env , get_session_id_with_fallback ( sid ) )
28
27
session = { }
29
28
sid = generate_unique_sid ( req . env , session )
30
29
end
@@ -37,31 +36,30 @@ def generate_hmac(sid, secret)
37
36
OpenSSL ::HMAC . hexdigest ( OpenSSL ::Digest ::MD5 . new , secret , sid ) . strip ( )
38
37
end
39
38
40
- # Get session data from DynamoDB.
41
- def find_session_data ( req , sid )
39
+ def generate_unique_sid ( env , session )
40
+ env [ 'dynamo_db.new_session' ] = 'true'
41
+ generate_sid
42
+ end
43
+
44
+ def get_session_id_with_fallback ( sid )
42
45
return nil unless sid
43
- digest , ver_sid = sid . public_id . split ( "--" )
46
+ digest , ver_sid = sid . public_id . split ( '--' )
44
47
if ver_sid && @config . secret_key && digest == generate_hmac ( ver_sid , @config . secret_key )
45
48
# Legacy session id format
46
- @lock . get_session_data ( req . env , sid . public_id )
49
+ sid . public_id
47
50
else
48
- @lock . get_session_data ( req . env , sid . private_id )
51
+ sid . private_id
49
52
end
50
53
end
51
54
52
- def generate_unique_sid ( env , session )
53
- env [ 'dynamo_db.new_session' ] = 'true'
54
- generate_sid
55
- end
56
-
57
55
def write_session ( req , sid , session , options )
58
- sid = generate_sid if sid . nil? || ! sid . respond_to? ( :private_id )
59
- @lock . set_session_data ( req . env , sid . private_id , session , options )
56
+ sid = generate_sid if sid . nil?
57
+ @lock . set_session_data ( req . env , get_session_id_with_fallback ( sid ) , session , options )
60
58
sid
61
59
end
62
60
63
61
def delete_session ( req , sid , options )
64
- @lock . delete_session ( req . env , sid . private_id )
62
+ @lock . delete_session ( req . env , get_session_id_with_fallback ( sid ) )
65
63
generate_sid unless options [ :drop ]
66
64
end
67
65
end
0 commit comments