summaryrefslogtreecommitdiff
path: root/lib/cookie.h
diff options
context:
space:
mode:
authorDaniel Gustafsson <daniel@yesql.se>2018-08-28 11:28:50 +0200
committerDaniel Stenberg <daniel@haxx.se>2018-08-31 14:11:37 +0200
commite2ef8d6fa11b2345e10b89db525920f2a0d5fd79 (patch)
tree3be4fab33a03fcda3d398217511d5e4744dd546a /lib/cookie.h
parentb842fa3110aa2ff1204fd9370d657bc5f1174ffb (diff)
downloadcurl-e2ef8d6fa11b2345e10b89db525920f2a0d5fd79.tar.gz
cookies: support creation-time attribute for cookies
According to RFC6265 section 5.4, cookies with equal path lengths SHOULD be sorted by creation-time (earlier first). This adds a creation-time record to the cookie struct in order to make cookie sorting more deterministic. The creation-time is defined as the order of the cookies in the jar, the first cookie read fro the jar being the oldest. The creation-time is thus not serialized into the jar. Also remove the strcmp() matching in the sorting as there is no lexicographic ordering in RFC6265. Existing tests are updated to match. Closes #2524
Diffstat (limited to 'lib/cookie.h')
-rw-r--r--lib/cookie.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/cookie.h b/lib/cookie.h
index 79b5928dc..a9f90ca71 100644
--- a/lib/cookie.h
+++ b/lib/cookie.h
@@ -34,7 +34,7 @@ struct Cookie {
char *domain; /* domain = <this> */
curl_off_t expires; /* expires = <this> */
char *expirestr; /* the plain text version */
- bool tailmatch; /* weather we do tail-matchning of the domain name */
+ bool tailmatch; /* whether we do tail-matching of the domain name */
/* RFC 2109 keywords. Version=1 means 2109-compliant cookie sending */
char *version; /* Version = <value> */
@@ -43,6 +43,7 @@ struct Cookie {
bool secure; /* whether the 'secure' keyword was used */
bool livecookie; /* updated from a server, not a stored file */
bool httponly; /* true if the httponly directive is present */
+ int creationtime; /* time when the cookie was written */
};
#define COOKIE_HASH_SIZE 256
@@ -55,6 +56,7 @@ struct CookieInfo {
bool running; /* state info, for cookie adding information */
long numcookies; /* number of cookies in the "jar" */
bool newsession; /* new session, discard session cookies on load */
+ int lastct; /* last creation-time used in the jar */
};
/* This is the maximum line length we accept for a cookie line. RFC 2109