Loading lib/imap.c +19 −5 Original line number Diff line number Diff line Loading @@ -740,6 +740,12 @@ static CURLcode imap_perform_fetch(struct connectdata *conn) } /* Send the FETCH command */ if(imap->partial) result = imap_sendf(conn, "FETCH %s BODY[%s]<%s>", imap->uid, imap->section ? imap->section : "", imap->partial); else result = imap_sendf(conn, "FETCH %s BODY[%s]", imap->uid, imap->section ? imap->section : ""); Loading Loading @@ -1963,6 +1969,7 @@ static CURLcode imap_done(struct connectdata *conn, CURLcode status, Curl_safefree(imap->uidvalidity); Curl_safefree(imap->uid); Curl_safefree(imap->section); Curl_safefree(imap->partial); Curl_safefree(imap->query); Curl_safefree(imap->custom); Curl_safefree(imap->custom_params); Loading Loading @@ -2506,8 +2513,8 @@ static CURLcode imap_parse_url_path(struct connectdata *conn) DEBUGF(infof(conn->data, "IMAP URL parameter '%s' = '%s'\n", name, value)); /* Process the known hierarchical parameters (UIDVALIDITY, UID and SECTION) stripping of the trailing slash character if it is present. /* Process the known hierarchical parameters (UIDVALIDITY, UID, SECTION and PARTIAL) stripping of the trailing slash character if it is present. Note: Unknown parameters trigger a URL_MALFORMAT error. */ if(Curl_raw_equal(name, "UIDVALIDITY") && !imap->uidvalidity) { Loading @@ -2531,6 +2538,13 @@ static CURLcode imap_parse_url_path(struct connectdata *conn) imap->section = value; value = NULL; } else if(Curl_raw_equal(name, "PARTIAL") && !imap->partial) { if(valuelen > 0 && value[valuelen - 1] == '/') value[valuelen - 1] = '\0'; imap->partial = value; value = NULL; } else { Curl_safefree(name); Curl_safefree(value); Loading lib/imap.h +1 −0 Original line number Diff line number Diff line Loading @@ -68,6 +68,7 @@ struct IMAP { char *uidvalidity; /* UIDVALIDITY to check in select */ char *uid; /* Message UID to fetch */ char *section; /* Message SECTION to fetch */ char *partial; /* Message PARTIAL to fetch */ char *query; /* Query to search for */ char *custom; /* Custom request */ char *custom_params; /* Parameters for the custom request */ Loading Loading
lib/imap.c +19 −5 Original line number Diff line number Diff line Loading @@ -740,6 +740,12 @@ static CURLcode imap_perform_fetch(struct connectdata *conn) } /* Send the FETCH command */ if(imap->partial) result = imap_sendf(conn, "FETCH %s BODY[%s]<%s>", imap->uid, imap->section ? imap->section : "", imap->partial); else result = imap_sendf(conn, "FETCH %s BODY[%s]", imap->uid, imap->section ? imap->section : ""); Loading Loading @@ -1963,6 +1969,7 @@ static CURLcode imap_done(struct connectdata *conn, CURLcode status, Curl_safefree(imap->uidvalidity); Curl_safefree(imap->uid); Curl_safefree(imap->section); Curl_safefree(imap->partial); Curl_safefree(imap->query); Curl_safefree(imap->custom); Curl_safefree(imap->custom_params); Loading Loading @@ -2506,8 +2513,8 @@ static CURLcode imap_parse_url_path(struct connectdata *conn) DEBUGF(infof(conn->data, "IMAP URL parameter '%s' = '%s'\n", name, value)); /* Process the known hierarchical parameters (UIDVALIDITY, UID and SECTION) stripping of the trailing slash character if it is present. /* Process the known hierarchical parameters (UIDVALIDITY, UID, SECTION and PARTIAL) stripping of the trailing slash character if it is present. Note: Unknown parameters trigger a URL_MALFORMAT error. */ if(Curl_raw_equal(name, "UIDVALIDITY") && !imap->uidvalidity) { Loading @@ -2531,6 +2538,13 @@ static CURLcode imap_parse_url_path(struct connectdata *conn) imap->section = value; value = NULL; } else if(Curl_raw_equal(name, "PARTIAL") && !imap->partial) { if(valuelen > 0 && value[valuelen - 1] == '/') value[valuelen - 1] = '\0'; imap->partial = value; value = NULL; } else { Curl_safefree(name); Curl_safefree(value); Loading
lib/imap.h +1 −0 Original line number Diff line number Diff line Loading @@ -68,6 +68,7 @@ struct IMAP { char *uidvalidity; /* UIDVALIDITY to check in select */ char *uid; /* Message UID to fetch */ char *section; /* Message SECTION to fetch */ char *partial; /* Message PARTIAL to fetch */ char *query; /* Query to search for */ char *custom; /* Custom request */ char *custom_params; /* Parameters for the custom request */ Loading