Merge pull request #1200 from gazpachoking/session_cookies_fix

Make sure session cookies do not overwrite explicit request cookies
This commit is contained in:
Kenneth Reitz
2013-02-19 22:50:10 -08:00
3 changed files with 10 additions and 9 deletions
+4 -2
View File
@@ -307,8 +307,10 @@ class RequestsCookieJar(cookielib.CookieJar, collections.MutableMapping):
self._cookies_lock = threading.RLock()
def copy(self):
"""This is not implemented. Calling this will throw an exception."""
raise NotImplementedError
"""Return a copy of this RequestsCookieJar."""
new_cj = RequestsCookieJar()
new_cj.update(self)
return new_cj
def create_cookie(name, value, **kwargs):
+5 -5
View File
@@ -251,9 +251,10 @@ class Session(SessionRedirectMixin):
if not isinstance(cookies, cookielib.CookieJar):
cookies = cookiejar_from_dict(cookies)
# Bubble down session cookies.
for cookie in self.cookies:
cookies.set_cookie(cookie)
# Merge with session cookies
merged_cookies = self.cookies.copy()
merged_cookies.update(cookies)
cookies = merged_cookies
# Gather clues from the surrounding environment.
if self.trust_env:
@@ -312,8 +313,7 @@ class Session(SessionRedirectMixin):
resp = self.send(prep, **send_kwargs)
# Persist cookies.
for cookie in resp.cookies:
self.cookies.set_cookie(cookie)
self.cookies.update(resp.cookies)
return resp
+1 -2
View File
@@ -252,8 +252,7 @@ def add_dict_to_cookiejar(cj, cookie_dict):
"""
cj2 = cookiejar_from_dict(cookie_dict)
for cookie in cj2:
cj.set_cookie(cookie)
cj.update(cj2)
return cj