From: daftshady Date: Sat, 28 Sep 2013 14:44:27 +0000 (+0900) Subject: Fixed #1630 X-Git-Tag: v2.0.1~13^2~8^2~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d22eaf96e2a1c64bc29579a072f67d2a9c758ef8;p=services%2Fpython-requests.git Fixed #1630 --- diff --git a/requests/cookies.py b/requests/cookies.py index f3ac64f..95157e7 100644 --- a/requests/cookies.py +++ b/requests/cookies.py @@ -404,3 +404,19 @@ def cookiejar_from_dict(cookie_dict, cookiejar=None): for name in cookie_dict: cookiejar.set_cookie(create_cookie(name, cookie_dict[name])) return cookiejar + + +def merge_session_cookies(cookiejar, cookie_dict): + """Merges cookie_dict with session CookieJar. + + :param cookiejar: Should be session cookie. + :param cookie_dict: Dict of key/values to be merged. + """ + if cookiejar is None: + cookiejar = RequestsCookieJar() + + if cookie_dict is not None: + for k in cookie_dict: + # Session should not be modified by request cookie. + if k not in [cookie.name for cookie in cookiejar]: + cookiejar.set_cookie(create_cookie(k, cookie_dict[k])) diff --git a/requests/sessions.py b/requests/sessions.py index a7e6d4e..b917acc 100644 --- a/requests/sessions.py +++ b/requests/sessions.py @@ -13,7 +13,7 @@ from collections import Mapping from datetime import datetime from .compat import cookielib, OrderedDict, urljoin, urlparse -from .cookies import cookiejar_from_dict, extract_cookies_to_jar, RequestsCookieJar +from .cookies import cookiejar_from_dict, extract_cookies_to_jar, RequestsCookieJar, merge_session_cookies from .models import Request, PreparedRequest from .hooks import default_hooks, dispatch_hook from .utils import to_key_val_list, default_headers @@ -146,13 +146,6 @@ class SessionRedirectMixin(object): extract_cookies_to_jar(self.cookies, prepared_request, resp.raw) - # Restore original cookies in redirects response. - headers = resp.request.headers - try: - headers['Cookie'] = req.headers['Cookie'] - except KeyError: - pass - i += 1 yield resp @@ -329,6 +322,9 @@ class Session(SessionRedirectMixin): ) prep = self.prepare_request(req) + # Add param cookies to session cookies + merge_session_cookies(self.cookies, cookies) + proxies = proxies or {} # Gather clues from the surrounding environment.