aboutsummaryrefslogtreecommitdiff
path: root/lib/formdata.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/formdata.c')
-rw-r--r--lib/formdata.c24
1 files changed, 23 insertions, 1 deletions
diff --git a/lib/formdata.c b/lib/formdata.c
index 1e15f3ce4..cee0b0b0e 100644
--- a/lib/formdata.c
+++ b/lib/formdata.c
@@ -382,8 +382,8 @@ char *MakeFormBoundary(void)
return retstring;
}
-
+/* Used from http.c */
void FormFree(struct FormData *form)
{
struct FormData *next;
@@ -391,6 +391,28 @@ void FormFree(struct FormData *form)
next=form->next; /* the following form line */
free(form->line); /* free the line */
free(form); /* free the struct */
+
+ } while((form=next)); /* continue */
+}
+
+/* external function to free up a whole form post chain */
+void curl_formfree(struct HttpPost *form)
+{
+ struct HttpPost *next;
+ do {
+ next=form->next; /* the following form line */
+
+ /* recurse to sub-contents */
+ if(form->more)
+ curl_formfree(form->more);
+
+ if(form->name)
+ free(form->name); /* free the name */
+ if(form->contents)
+ free(form->contents); /* free the contents */
+ if(form->contenttype)
+ free(form->contenttype); /* free the content type */
+ free(form); /* free the struct */
} while((form=next)); /* continue */
}