CookieMap* CookieManager::findOrCreateCookieMap(CookieMap* protocolMap, const String& domain, bool findOnly) { // Explode the domain with the '.' delimiter Vector<String> delimitedHost; domain.split(".", delimitedHost); CookieMap* curMap = protocolMap; size_t hostSize = delimitedHost.size(); CookieLog("CookieManager - looking at protocol map %s \n", protocolMap->getName().utf8().data()); // Find & create necessary CookieMaps by traversing down the domain tree // Each CookieMap represent a subsection of the domain, delimited by "." int i = hostSize - 1; while (i >= 0) { CookieLog("CookieManager - finding %s in currentmap\n", delimitedHost[i].utf8().data()); CookieMap* nextMap = curMap->getSubdomainMap(delimitedHost[i]); if (!nextMap) { CookieLog("CookieManager - cannot find map\n"); if (findOnly) return 0; CookieLog("CookieManager - creating %s in currentmap %s\n", delimitedHost[i].utf8().data(), curMap->getName().utf8().data()); nextMap = new CookieMap(delimitedHost[i]); CookieLog("CookieManager - adding subdomain to map\n"); curMap->addSubdomainMap(delimitedHost[i], nextMap); } curMap = nextMap; i--; } return curMap; }
CookieMap* CookieManager::findOrCreateCookieMap(CookieMap* protocolMap, const ParsedCookie& candidateCookie) { // Explode the domain with the '.' delimiter Vector<String> delimitedHost; // If the domain is an IP address, don't split it. if (candidateCookie.domainIsIPAddress()) delimitedHost.append(candidateCookie.domain()); else candidateCookie.domain().split(".", delimitedHost); CookieMap* curMap = protocolMap; size_t hostSize = delimitedHost.size(); CookieLog("CookieManager - looking at protocol map %s \n", protocolMap->getName().utf8().data()); // Find & create necessary CookieMaps by traversing down the domain tree // Each CookieMap represent a subsection of the domain, delimited by "." int i = hostSize - 1; while (i >= 0) { CookieLog("CookieManager - finding %s in currentmap\n", delimitedHost[i].utf8().data()); CookieMap* nextMap = curMap->getSubdomainMap(delimitedHost[i]); if (!nextMap) { CookieLog("CookieManager - cannot find map\n"); if (candidateCookie.hasExpired()) return 0; CookieLog("CookieManager - creating %s in currentmap %s\n", delimitedHost[i].utf8().data(), curMap->getName().utf8().data()); nextMap = new CookieMap(delimitedHost[i]); CookieLog("CookieManager - adding subdomain to map\n"); curMap->addSubdomainMap(delimitedHost[i], nextMap); } curMap = nextMap; i--; } return curMap; }