cookie: simplifications

- 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
This commit is contained in:
Daniel Stenberg 2025-08-28 11:42:49 +02:00
parent f08ecdc586
commit fe01ace248
No known key found for this signature in database
GPG key ID: 5CC908FDB71E12C2
3 changed files with 22 additions and 27 deletions

View file

@ -1294,6 +1294,14 @@ static int cookie_sort_ct(const void *p1, const void *p2)
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
*
@ -1306,15 +1314,17 @@ static int cookie_sort_ct(const void *p1, const void *p2)
* 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);
@ -1324,9 +1334,6 @@ int Curl_cookie_getlist(struct Curl_easy *data,
/* 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);