def add(cookie)
url = cookie.url
name, value = cookie.name, cookie.value
expires, domain, path =
cookie.expires, cookie.domain, cookie.path
secure, domain_orig, path_orig =
cookie.secure?, cookie.domain_orig?, cookie.path_orig?
discard, override =
cookie.discard?, cookie.override?
domainname = url.host
domain_orig, path_orig = domain, path
use_security = override
if domain
if domain !~ /^\./ && domainname != domain
domain = '.'+domain
end
if @netscape_rule
n = total_dot_num(domain)
if n < 2
cookie_error(SpecialError.new(), override)
elsif n == 2
ok = SPECIAL_DOMAIN.select{|sdomain|
sdomain == domain[-(sdomain.length)..-1]
}
if ok.empty?
cookie_error(SpecialError.new(), override)
end
end
end
end
path ||= url.path.sub(%r|/[^/]*|, '')
domain ||= domainname
@cookies.synchronize do
cookie = find_cookie_info(domain, path, name)
if !cookie
cookie = WebAgent::Cookie.new()
cookie.use = true
@cookies << cookie
end
check_expired_cookies()
end
cookie.url = url
cookie.name = name
cookie.value = value
cookie.expires = expires
cookie.domain = domain
cookie.path = path
cookie.secure = secure
cookie.domain_orig = domain_orig
cookie.path_orig = path_orig
if discard || cookie.expires == nil
cookie.discard = true
else
cookie.discard = false
@is_saved = false
end
end