Permalink
Browse files

wrap-session no longer dies on nil response

  • Loading branch information...
1 parent 8a1550e commit f782316bdc3a5018be0efed0754f24b540e5925e @weavejester weavejester committed Feb 14, 2011
Showing with 19 additions and 14 deletions.
  1. +15 −14 ring-core/src/ring/middleware/session.clj
  2. +4 −0 ring-core/test/ring/middleware/session_test.clj
View
29 ring-core/src/ring/middleware/session.clj
@@ -36,17 +36,18 @@
(fn [request]
(let [sess-key (get-in request [:cookies cookie-name :value])
session (read-session store sess-key)
- request (assoc request :session session)
- response (handler request)
- sess-key* (if (contains? response :session)
- (if (response :session)
- (write-session store sess-key (response :session))
- (if sess-key
- (delete-session store sess-key))))
- response (dissoc response :session)
- cookie {cookie-name (merge cookie-attrs
- (response :session-cookie-attrs)
- {:value sess-key*})}]
- (if (and sess-key* (not= sess-key sess-key*))
- (assoc response :cookies (merge (response :cookies) cookie))
- response)))))))
+ request (assoc request :session session)]
+ (if-let [response (handler request)]
+ (let [sess-key* (if (contains? response :session)
+ (if-let [session (response :session)]
+ (write-session store sess-key session)
+ (if sess-key
+ (delete-session store sess-key))))
+ response (dissoc response :session)
+ cookie {cookie-name
+ (merge cookie-attrs
+ (response :session-cookie-attrs)
+ {:value sess-key*})}]
+ (if (and sess-key* (not= sess-key sess-key*))
+ (assoc response :cookies (merge (response :cookies) cookie))
+ response)))))))))
View
4 ring-core/test/ring/middleware/session_test.clj
@@ -104,3 +104,7 @@
response (handler {:cookies {}})]
(is (= (get-in response [:headers "Set-Cookie"])
["ring-session=foo%3Abar;Max-Age=5;Path=/"]))))
+
+(deftest session-response-is-nil
+ (let [handler (wrap-session (constantly nil))]
+ (is (nil? (handler {})))))

0 comments on commit f782316

Please sign in to comment.