Commit 598e8dfb authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

Now we're setting a default domain for received cookies so that we can

properly match those cookies in subsequent requests
parent 9efdb680
Loading
Loading
Loading
Loading
+10 −5
Original line number Diff line number Diff line
@@ -104,7 +104,8 @@ Example set of cookies:
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];
@@ -194,6 +195,10 @@ Curl_cookie_add(struct CookieInfo *c,
        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
@@ -441,7 +446,7 @@ struct CookieInfo *Curl_cookie_init(char *file, struct CookieInfo *inc)
      while(*lineptr && isspace((int)*lineptr))
        lineptr++;

      Curl_cookie_add(c, headerline, lineptr);
      Curl_cookie_add(c, headerline, lineptr, NULL);
    }
    if(fromfile)
      fclose(fp);
@@ -632,13 +637,13 @@ int Curl_cookie_output(struct CookieInfo *c, char *dumphere)
              "%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;
    }
+7 −1
Original line number Diff line number Diff line
@@ -68,7 +68,13 @@ struct CookieInfo {
#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 *);
+1 −1
Original line number Diff line number Diff line
@@ -620,7 +620,7 @@ Transfer(struct connectdata *c_conn)
              }
              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:")) &&