diff options
Diffstat (limited to 'lib/cgi/session.rb')
-rw-r--r-- | lib/cgi/session.rb | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/lib/cgi/session.rb b/lib/cgi/session.rb index 2bb6571bf6..d2a1be4aab 100644 --- a/lib/cgi/session.rb +++ b/lib/cgi/session.rb @@ -301,20 +301,14 @@ class CGI # Retrieve the session data for key +key+. def [](key) - unless @data - @data = @dbman.restore - end + @data ||= @dbman.restore @data[key] end # Set the session date for key +key+. def []=(key, val) - unless @write_lock - @write_lock = true - end - unless @data - @data = @dbman.restore - end + @write_lock ||= true + @data ||= @dbman.restore @data[key] = val end @@ -380,7 +374,9 @@ class CGI require 'digest/md5' md5 = Digest::MD5.hexdigest(id)[0,16] @path = dir+"/"+prefix+md5+suffix - unless File::exist? @path + if File::exist? @path + @hash = nil + else unless session.new_session raise CGI::Session::NoSession, "uninitialized session" end |