- add Curl_secure_context(), to have it determined in a single place.
- tweak the Curl_cookie_getlist() proto. Move some logic into the
function - at is only called in a single place. Instead of forcing the
caller to do it.
- make 'is_ip' a const
Closes #18419
return (c2->creationtime > c1->creationtime) ? 1 : -1;
}
+bool Curl_secure_context(struct connectdata *conn, const char *host)
+{
+ return conn->handler->protocol&(CURLPROTO_HTTPS|CURLPROTO_WSS) ||
+ curl_strequal("localhost", host) ||
+ !strcmp(host, "127.0.0.1") ||
+ !strcmp(host, "::1");
+}
+
/*
* Curl_cookie_getlist
*
* Returns 0 when there is a list returned. Otherwise non-zero.
*/
int Curl_cookie_getlist(struct Curl_easy *data,
- struct CookieInfo *ci,
- const char *host, const char *path,
- bool secure,
+ struct connectdata *conn,
+ const char *host,
struct Curl_llist *list)
{
size_t matches = 0;
- bool is_ip;
+ const bool is_ip = Curl_host_is_ipnum(host);
const size_t myhash = cookiehash(host);
struct Curl_llist_node *n;
+ const bool secure = Curl_secure_context(conn, host);
+ struct CookieInfo *ci = data->cookies;
+ const char *path = data->state.up.path;
Curl_llist_init(list, NULL);
/* at first, remove expired cookies */
remove_expired(ci);
- /* check if host is an IP(v4|v6) address */
- is_ip = Curl_host_is_ipnum(host);
-
for(n = Curl_llist_head(&ci->cookielist[myhash]);
n; n = Curl_node_next(n)) {
struct Cookie *co = Curl_node_elem(n);
#define MAX_COOKIE_SEND_AMOUNT 150
struct Curl_easy;
+struct connectdata;
+
/*
* Add a cookie to the internal list of cookies. The domain and path arguments
* are only used if the header boolean is TRUE.
*/
+bool Curl_secure_context(struct connectdata *conn, const char *host);
struct Cookie *Curl_cookie_add(struct Curl_easy *data,
struct CookieInfo *c, bool header,
bool noexpiry, const char *lineptr,
const char *domain, const char *path,
bool secure);
-
-int Curl_cookie_getlist(struct Curl_easy *data,
- struct CookieInfo *c, const char *host,
- const char *path, bool secure,
- struct Curl_llist *list);
+int Curl_cookie_getlist(struct Curl_easy *data, struct connectdata *conn,
+ const char *host, struct Curl_llist *list);
void Curl_cookie_clearall(struct CookieInfo *cookies);
void Curl_cookie_clearsess(struct CookieInfo *cookies);
if(data->cookies && data->state.cookie_engine) {
const char *host = data->state.aptr.cookiehost ?
data->state.aptr.cookiehost : conn->host.name;
- const bool secure_context =
- conn->handler->protocol&(CURLPROTO_HTTPS|CURLPROTO_WSS) ||
- curl_strequal("localhost", host) ||
- !strcmp(host, "127.0.0.1") ||
- !strcmp(host, "::1");
Curl_share_lock(data, CURL_LOCK_DATA_COOKIE, CURL_LOCK_ACCESS_SINGLE);
- rc = Curl_cookie_getlist(data, data->cookies, host, data->state.up.path,
- secure_context, &list);
+ rc = Curl_cookie_getlist(data, conn, host, &list);
Curl_share_unlock(data, CURL_LOCK_DATA_COOKIE);
}
if(!rc) {
* real peer hostname. */
const char *host = data->state.aptr.cookiehost ?
data->state.aptr.cookiehost : conn->host.name;
- const bool secure_context =
- conn->handler->protocol&(CURLPROTO_HTTPS|CURLPROTO_WSS) ||
- curl_strequal("localhost", host) ||
- !strcmp(host, "127.0.0.1") ||
- !strcmp(host, "::1");
-
- Curl_share_lock(data, CURL_LOCK_DATA_COOKIE,
- CURL_LOCK_ACCESS_SINGLE);
+ const bool secure_context = Curl_secure_context(conn, host);
+ Curl_share_lock(data, CURL_LOCK_DATA_COOKIE, CURL_LOCK_ACCESS_SINGLE);
Curl_cookie_add(data, data->cookies, TRUE, FALSE, v, host,
data->state.up.path, secure_context);
Curl_share_unlock(data, CURL_LOCK_DATA_COOKIE);