Sfoglia il codice sorgente

2010-10-09 Tatsuhiro Tsujikawa <[email protected]>

	Don't append slash in CookieStorage::criteriaFind().  Append file
	part of URI to request-uri in HttpRequest::createRequest().  This
	change reverts the part of the previous change:"The
	request-path must be ends with '/' so that request-path '/foo/'
	path-matches cookie-path '/foo' and '/foo/' in the proposed
	algorithm."
	* src/CookieStorage.cc
	* src/HttpRequest.cc
Tatsuhiro Tsujikawa 15 anni fa
parent
commit
b8f8a14937
3 ha cambiato i file con 20 aggiunte e 9 eliminazioni
  1. 11 0
      ChangeLog
  2. 2 4
      src/CookieStorage.cc
  3. 7 5
      src/HttpRequest.cc

+ 11 - 0
ChangeLog

@@ -1,3 +1,14 @@
+2010-10-09  Tatsuhiro Tsujikawa  <[email protected]>
+
+	Don't append slash in CookieStorage::criteriaFind().  Append file
+	part of URI to request-uri in HttpRequest::createRequest().  This
+	change reverts the part of the previous change:"The
+	request-path must be ends with '/' so that request-path '/foo/'
+	path-matches cookie-path '/foo' and '/foo/' in the proposed
+	algorithm."
+	* src/CookieStorage.cc
+	* src/HttpRequest.cc
+
 2010-10-09  Tatsuhiro Tsujikawa  <[email protected]>
 
 	Rewritten Cookie class and Cookie parser based on

+ 2 - 4
src/CookieStorage.cc

@@ -246,12 +246,10 @@ std::vector<Cookie> CookieStorage::criteriaFind
   if(requestPath.empty()) {
     return res;
   }
-  std::string normRequestPath =
-    requestPath == A2STR::SLASH_C?requestPath:requestPath+A2STR::SLASH_C;
   if(util::isNumericHost(requestHost)) {
     searchCookieByDomainSuffix
       (requestHost, domains_.begin(), domains_.end(), std::back_inserter(res),
-       requestHost, normRequestPath, now, secure);
+       requestHost, requestPath, now, secure);
   } else {
     std::vector<std::string> levels;
     util::split(requestHost, std::back_inserter(levels),A2STR::DOT_C);
@@ -263,7 +261,7 @@ std::vector<Cookie> CookieStorage::criteriaFind
       domain.insert(domain.begin(), (*i).begin(), (*i).end());
       searchCookieByDomainSuffix
         (domain, domains_.begin(), domains_.end(),
-         std::back_inserter(res), requestHost, normRequestPath, now, secure);
+         std::back_inserter(res), requestHost, requestPath, now, secure);
     }
   }
   std::vector<CookiePathDivider> divs;

+ 7 - 5
src/HttpRequest.cc

@@ -225,11 +225,13 @@ std::string HttpRequest::createRequest()
   if(!cookieStorage_.isNull()) {
     std::string cookiesValue;
     std::vector<Cookie> cookies =
-      cookieStorage_->criteriaFind(getHost(),
-                                   getDir(),
-                                   Time().getTime(),
-                                   getProtocol() == Request::PROTO_HTTPS ?
-                                   true : false);
+      cookieStorage_->criteriaFind
+      (getHost(),
+       getDir() == A2STR::SLASH_C?
+       getDir()+getFile():strconcat(getDir(), A2STR::SLASH_C, getFile()),
+       Time().getTime(),
+       getProtocol() == Request::PROTO_HTTPS ?
+       true : false);
     for(std::vector<Cookie>::const_iterator itr = cookies.begin(),
           eoi = cookies.end(); itr != eoi; ++itr) {
       strappend(cookiesValue, (*itr).toString(), ";");