lib/rsence/sessionstorage.rb in rsence-pre-2.2.0.38 vs lib/rsence/sessionstorage.rb in rsence-pre-2.2.2.0
- old
+ new
@@ -216,12 +216,16 @@
ses_data = Marshal.load( ses_data_dump )
ses_key = ses_data[:ses_key]
@sessions[ses_id] = ses_data
@session_keys[ ses_key ] = ses_id
@session_cookie_keys[ ses_data[:cookie_key] ] = ses_id
+ if @plugins
+ @plugins.delegate( :load_ses_id, ses_id )
+ @plugins.delegate( :load_ses, ses_data )
+ end
rescue => e
- warn "Unable to restore session id: #{ses_id}, error: #{e.inspect}"
+ warn "Unable to load session: #{ses_id}, because: #{e.message}"
@db[:rsence_session].filter(:id => ses_id).delete
@db[:rsence_uploads].filter(:ses_id => ses_id).delete
end
end
end
@@ -234,23 +238,30 @@
puts "Warning: Can't store sessions: No database!" if RSence.args[:verbose]
return
end
puts "Storing sessions..." if RSence.args[:verbose]
db_open
- @sessions.each_key do |ses_id|
- ses_data = @sessions[ ses_id ]
- ses_data_dump = Marshal.dump( ses_data )
- @db[:rsence_session].filter(
- :id => ses_id
- ).update(
- :cookie_key => ses_data[:cookie_key],
- :ses_key => ses_data[:ses_key],
- :user_id => ses_data[:user_id],
- :ses_data => ses_data_dump.to_sequel_blob,
- :ses_timeout => ses_data[:timeout],
- :ses_stored => Time.now.to_i
- )
+ @sessions.each do |ses_id,ses_data|
+ if @plugins
+ @plugins.delegate( :dump_ses, ses_data )
+ @plugins.delegate( :dump_ses_id, ses_id )
+ end
+ begin
+ ses_data_dump = Marshal.dump( ses_data )
+ @db[:rsence_session].filter(
+ :id => ses_id
+ ).update(
+ :cookie_key => ses_data[:cookie_key],
+ :ses_key => ses_data[:ses_key],
+ :user_id => ses_data[:user_id],
+ :ses_data => ses_data_dump.to_sequel_blob,
+ :ses_timeout => ses_data[:timeout],
+ :ses_stored => Time.now.to_i
+ )
+ rescue => e
+ warn "Unable to dump session: #{ses_id}, because: #{e.message}"
+ end
end
db_close
end
## Shut-down signal, triggers store_sessions for now
@@ -294,10 +305,13 @@
# Deletes the session data itself
@sessions.delete( ses_id )
# Removes all ticket-based storage bound to the session
- @plugins[:ticket].expire_ses_id( ses_id ) if @plugins
+ if @plugins
+ @plugins.delegate( :expire_ses, ses_data )
+ @plugins.delegate( :expire_ses_id, ses_id )
+ end
# target -> source cleanup
if @clone_sources.has_key?( ses_id )
source_id = @clone_sources[ ses_id ]
@clone_sources.delete( ses_id ) if @clone_sources.has_key?( ses_id )