From 233e726fe360334b30b553c9dfe5328672db0143 Mon Sep 17 00:00:00 2001 From: bel Date: Fri, 15 Jan 2016 21:29:25 +0100 Subject: [PATCH] Alternative to mg_upload (Step 15/?) --- examples/embedded_c/embedded_c.c | 2 +- src/handle_form.inl | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/examples/embedded_c/embedded_c.c b/examples/embedded_c/embedded_c.c index b77e94a6..e78ddb63 100644 --- a/examples/embedded_c/embedded_c.c +++ b/examples/embedded_c/embedded_c.c @@ -190,7 +190,7 @@ FormHandler(struct mg_connection *conn, void *cbdata) /* Handler may access the request info using mg_get_request_info */ const struct mg_request_info *req_info = mg_get_request_info(conn); int ret; - struct mg_form_data_handler fdh = {field_found, 0, 0}; + struct mg_form_data_handler fdh = {field_found, 0}; /* TODO: Checks before calling handle_form_data ? */ (void)req_info; diff --git a/src/handle_form.inl b/src/handle_form.inl index bb688c17..e5f9872e 100644 --- a/src/handle_form.inl +++ b/src/handle_form.inl @@ -56,8 +56,14 @@ url_encoded_field_found(const char *key, struct mg_form_data_handler *fdh) { /* Call callback */ - /* TODO: mg_url_decode(key, (size_t)keylen, ) */ - return fdh->field_found(key, keylen, filename, disposition, fdh->user_data); + char key_dec[1024]; + int ret = + mg_url_decode(key, (size_t)keylen, key_dec, (int)sizeof(key_dec), 1); + if ((ret < sizeof(key_dec)) && (ret >= 0)) { + return fdh->field_found( + key, keylen, filename, disposition, fdh->user_data); + } + return 0; /* SKIP; */ } @@ -187,7 +193,7 @@ mg_handle_form_data(struct mg_connection *conn, /* Call callback */ fdh->field_found( - buf, (size_t)keylen, val, (size_t)vallen, fdh->user_data); + buf, (size_t)keylen, NULL, &disposition, fdh->user_data); /* Proceed to next entry */ used = next - buf;