struct Cookie *
Curl_cookie_add(struct CookieInfo *c,
bool httpheader, /* TRUE if HTTP header-style line */
- char *lineptr) /* first non-space of the line */
+ char *lineptr, /* first non-space of the line */
+ char *domain) /* default domain */
{
struct Cookie *clist;
char what[MAX_COOKIE_LINE];
ptr++;
semiptr=strchr(ptr, ';'); /* now, find the next semicolon */
} while(semiptr);
+
+ if(NULL == co->domain)
+ /* no domain given in the header line, set the default now */
+ co->domain=strdup(domain);
}
else {
/* This line is NOT a HTTP header style line, we do offer support for
while(*lineptr && isspace((int)*lineptr))
lineptr++;
- Curl_cookie_add(c, headerline, lineptr);
+ Curl_cookie_add(c, headerline, lineptr, NULL);
}
if(fromfile)
fclose(fp);
"%u\t" /* expires */
"%s\t" /* name */
"%s\n", /* value */
- co->domain,
+ co->domain?co->domain:"unknown",
co->field1==2?"TRUE":"FALSE",
- co->path,
+ co->path?co->path:"/",
co->secure?"TRUE":"FALSE",
(unsigned int)co->expires,
co->name,
- co->value);
+ co->value?co->value:"");
co=co->next;
}
#define MAX_NAME 256
#define MAX_NAME_TXT "255"
-struct Cookie *Curl_cookie_add(struct CookieInfo *, bool, char *);
+/*
+ * Add a cookie to the internal list of cookies. The domain argument is only
+ * used if the header boolean is TRUE.
+ */
+struct Cookie *Curl_cookie_add(struct CookieInfo *, bool header, char *line,
+ char *domain);
+
struct CookieInfo *Curl_cookie_init(char *, struct CookieInfo *);
struct Cookie *Curl_cookie_getlist(struct CookieInfo *, char *, char *, bool);
void Curl_cookie_freelist(struct Cookie *);
}
else if(data->cookies &&
strnequal("Set-Cookie:", p, 11)) {
- Curl_cookie_add(data->cookies, TRUE, &p[12]);
+ Curl_cookie_add(data->cookies, TRUE, &p[12], conn->name);
}
else if(strnequal("Last-Modified:", p,
strlen("Last-Modified:")) &&