summary refs log tree commit
diff options
context:
space:
mode:
authorScytrin dai Kinthra <scytrin@gmail.com>2009-11-22 18:08:53 -0800
committerScytrin dai Kinthra <scytrin@gmail.com>2009-12-02 20:01:07 -0800
commit50fc8eb0f1c35b9d0b8b4b83b603ae15c2fe0c18 (patch)
treefc92fddd4a19229a3e24dde08b4547e6f3b0145a
parentc64d7520e5cd48ec51029a96f1dfe684b5d30370 (diff)
downloadrack-50fc8eb0f1c35b9d0b8b4b83b603ae15c2fe0c18.tar.gz
Inlining of #merge_sessions
-rw-r--r--lib/rack/session/memcache.rb37
1 files changed, 16 insertions, 21 deletions
diff --git a/lib/rack/session/memcache.rb b/lib/rack/session/memcache.rb
index 4a65cbf3..7ae8707a 100644
--- a/lib/rack/session/memcache.rb
+++ b/lib/rack/session/memcache.rb
@@ -74,7 +74,22 @@ module Rack
           @pool.add session_id, 0 # so we don't worry about cache miss on #set
         end
         old_session = new_session.instance_variable_get('@old') || {}
-        session = merge_sessions session_id, old_session, new_session, session
+
+        begin # merge sessions
+          unless Hash === old_session and Hash === new_session
+            warn 'Bad old_session or new_session sessions provided.'
+            return session
+          end
+
+          delete = old_session.keys - new_session.keys
+          env['rack.errors'].puts("//@#{session_id}: delete #{delete*','}") if $VERBOSE and not delete.empty?
+          delete.each{|k| session.delete k }
+
+          update = new_session.keys.select{|k| new_session[k] != old_session[k] }
+          env['rack.errors'].puts("//@#{session_id}: update #{update*','}") if $VERBOSE and not update.empty?
+          update.each{|k| session[k] = new_session[k] }
+        end
+
         @pool.set session_id, session, expiry
         return session_id
       rescue MemCache::MemCacheError, Errno::ECONNREFUSED # MemCache server cannot be contacted
@@ -84,26 +99,6 @@ module Rack
       ensure
         @mutex.unlock if env['rack.multithread']
       end
-
-      private
-
-      def merge_sessions sid, old, new, cur=nil
-        cur ||= {}
-        unless Hash === old and Hash === new
-          warn 'Bad old or new sessions provided.'
-          return cur
-        end
-
-        delete = old.keys - new.keys
-        warn "//@#{sid}: delete #{delete*','}" if $VERBOSE and not delete.empty?
-        delete.each{|k| cur.delete k }
-
-        update = new.keys.select{|k| new[k] != old[k] }
-        warn "//@#{sid}: update #{update*','}" if $VERBOSE and not update.empty?
-        update.each{|k| cur[k] = new[k] }
-
-        cur
-      end
     end
   end
 end