# Be sure to restart your server when you modify this file.
-# Your secret key for verifying cookie session data integrity.
-# If you change this key, all old sessions will become invalid!
-# Make sure the secret is at least 30 characters and all random,
-# no regular words or you'll be exposed to dictionary attacks.
-ActionController::Base.session = {
- :key => '_osm_session',
- :secret => 'd886369b1e709c61d1f9fcb07384a2b96373c83c01bfc98c6611a9fe2b6d0b14215bb360a0154265cccadde5489513f2f9b8d9e7b384a11924f772d2872c2a1f'
-}
+if defined?(MEMCACHE_SERVERS)
+ unless STATUS == :database_offline or STATUS == :database_readonly
+ module Rack
+ module Session
+ class Memcache
+ def get_session(env, sid)
+ with_lock(env, [nil, {}]) do
+ unless sid and session = @pool.get(sid)
+ if sid and s = ActiveRecord::SessionStore::SqlBypass.find_by_session_id(sid)
+ session = s.data
+ s.destroy
+ else
+ sid, session = generate_sid, {}
+ end
+
+ unless /^STORED/ =~ @pool.add(sid, session)
+ raise "Session collision on '#{sid.inspect}'"
+ end
+ end
+ [sid, session]
+ end
+ end
+ end
+ end
+ end
+ end
-# Use the database for sessions instead of the cookie-based default,
-# which shouldn't be used to store highly confidential information
-# (create the session table with "rake db:sessions:create")
-unless STATUS == :database_offline or STATUS == :database_readonly
- ActionController::Base.session_store = :sql_session_store
+ cache = MemCache.new(:namespace => "rails:session", :string_return_types => true)
+
+ OpenStreetMap::Application.config.session_store :mem_cache_store, :cache => cache, :key => "_osm_session"
+else
+ OpenStreetMap::Application.config.session_store :cache_store, :key => '_osm_session'
end