From fee3db104b47e9ed8561efdbae86f674b0e81b47 Mon Sep 17 00:00:00 2001 From: bel Date: Wed, 13 Jan 2016 23:15:20 +0100 Subject: [PATCH] Alternative to mg_upload (Step 12/?) --- examples/embedded_c/embedded_c.c | 10 ++++++++++ src/handle_form.inl | 5 +++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/examples/embedded_c/embedded_c.c b/examples/embedded_c/embedded_c.c index f5a0d3d2..8c02184c 100644 --- a/examples/embedded_c/embedded_c.c +++ b/examples/embedded_c/embedded_c.c @@ -177,6 +177,13 @@ field_found(const char *key, size_t vallen, void *user_data) { + struct mg_connection *conn = (struct mg_connection *)user_data; + + mg_write(conn, key, keylen); + mg_printf(conn, " = "); + mg_write(conn, value, vallen); + mg_printf(conn, "\r\n"); + return 0; } @@ -192,6 +199,9 @@ FormHandler(struct mg_connection *conn, void *cbdata) /* TODO: Checks before calling handle_form_data ? */ (void)req_info; + mg_printf(conn, "HTTP/1.0 200 OK\r\nContent-Type: text/plain\r\n\r\n"); + fdh.user_data = (void *)conn; + /* TODO: Handle the return value */ ret = mg_handle_form_data(conn, &fdh); diff --git a/src/handle_form.inl b/src/handle_form.inl index af9cfd4a..440e1a27 100644 --- a/src/handle_form.inl +++ b/src/handle_form.inl @@ -108,6 +108,7 @@ mg_handle_form_data(struct mg_connection *conn, next++; } else { vallen = strlen(val); + next = val + vallen; } /* Call callback */ @@ -115,7 +116,7 @@ mg_handle_form_data(struct mg_connection *conn, data, (size_t)keylen, val, (size_t)vallen, fdh->user_data); /* Proceed to next entry */ - data = val + vallen; + data = next; } return 0; @@ -135,7 +136,7 @@ mg_handle_form_data(struct mg_connection *conn, int buf_fill = 0; for (;;) { - + /* TODO(high): Handle (text) fields with data > sizeof(buf). */ const char *val; const char *next; ptrdiff_t keylen, vallen;