From 94a5b505f7ef7760fcfa7b824ee49758eb63a9e8 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Bollo?= Date: Thu, 7 Apr 2016 11:53:43 +0200 Subject: [PATCH] fix file posting MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Change-Id: If7e0aa3122af3a308a8441b518021f8a5cbe9473 Signed-off-by: José Bollo --- plugins/samples/HelloWorld.c | 3 ++- plugins/samples/SamplePost.c | 3 ++- src/afb-hreq.c | 7 +++++-- src/local-def.h | 27 --------------------------- 4 files changed, 9 insertions(+), 31 deletions(-) diff --git a/plugins/samples/HelloWorld.c b/plugins/samples/HelloWorld.c index fd780e20..e29c22fa 100644 --- a/plugins/samples/HelloWorld.c +++ b/plugins/samples/HelloWorld.c @@ -29,7 +29,8 @@ static int fillargs(json_object *args, struct afb_arg arg) obj = json_object_new_object(); json_object_object_add (obj, "value", json_object_new_string(arg.value)); - json_object_object_add (obj, "path", json_object_new_string(arg.path)); + if (arg.path != NULL) + json_object_object_add (obj, "path", json_object_new_string(arg.path)); json_object_object_add (obj, "size", json_object_new_int64((int64_t)arg.size)); json_object_object_add (args, arg.name && *arg.name ? arg.name : "", obj); return 1; /* continue to iterate */ diff --git a/plugins/samples/SamplePost.c b/plugins/samples/SamplePost.c index 58a2a8b8..8a1b477a 100644 --- a/plugins/samples/SamplePost.c +++ b/plugins/samples/SamplePost.c @@ -31,7 +31,8 @@ static int fillargs(json_object *args, struct afb_arg arg) obj = json_object_new_object(); json_object_object_add (obj, "value", json_object_new_string(arg.value)); - json_object_object_add (obj, "path", json_object_new_string(arg.path)); + if (arg.path != NULL) + json_object_object_add (obj, "path", json_object_new_string(arg.path)); json_object_object_add (obj, "size", json_object_new_int64((int64_t)arg.size)); json_object_object_add (args, arg.name && *arg.name ? arg.name : "", obj); return 1; /* continue to iterate */ diff --git a/src/afb-hreq.c b/src/afb-hreq.c index aff204d9..5ac45843 100644 --- a/src/afb-hreq.c +++ b/src/afb-hreq.c @@ -438,13 +438,15 @@ static int opentempfile(char **path) int fd; char *fname; - fname = strdup("XXXXXX"); + fname = strdup("XXXXXX"); /* TODO improve the path */ if (fname == NULL) return -1; - fd = mkostemp(fname, O_CLOEXEC); + fd = mkostemp(fname, O_CLOEXEC|O_WRONLY); if (fd < 0) free(fname); + else + *path = fname; return fd; } @@ -454,6 +456,7 @@ int afb_hreq_post_add_file(struct afb_hreq *hreq, const char *key, const char *f ssize_t sz; struct hreq_data *hdat = get_data(hreq, key, 1); +fprintf(stderr, "%s=%s %s=%s %s\n",key,hdat->key,file,hdat->value,hdat->path); if (hdat->value == NULL) { hdat->value = strdup(file); if (hdat->value == NULL) diff --git a/src/local-def.h b/src/local-def.h index 5735f6a2..fcab6adb 100644 --- a/src/local-def.h +++ b/src/local-def.h @@ -27,28 +27,18 @@ /* other definitions --------------------------------------------------- */ // Note: because of a bug in libmagic MAGIC_DB NULL should not be used for default -#define OPA_INDEX "index.html" #define MAX_ALIAS 10 // max number of aliases #define COOKIE_NAME "afb-session" #define DEFLT_CNTX_TIMEOUT 3600 // default Client Connection Timeout #define DEFLT_API_TIMEOUT 0 // default Plugin API Timeout [0=NoLimit for Debug Only] -#define DEFLT_API_TIMEOUT 0 // default Plugin API Timeout #define DEFLT_CACHE_TIMEOUT 100000 // default Static File Chache [Client Side Cache 100000~=1day] #define DEFLT_AUTH_TOKEN NULL // expect for debug should == NULL #define DEFLT_HTTP_TIMEOUT 15 // Max MibMicroHttp timeout -#define AFB_MAX_PLUGINS 20 // Max number of plugins for a given binder -#define MAX_POST_SIZE 4096 // maximum size for POST data #define CTX_NBCLIENTS 10 // allow a default of 10 authenticated clients - - - -enum AFB_Mode; - - typedef struct { char *url; char *path; @@ -73,23 +63,6 @@ struct AFB_config AFB_aliasdir *aliasdir; // alias mapping for icons,apps,... }; -// MHD_lookup_connection_value(connection, MHD_GET_ARGUMENT_KIND, "value"); -typedef struct { - const char *uuid; - const char *url; - const char *prefix; // plugin convivial name - const char *method; -/* - AFB_PostRequest *post; -*/ - struct json_object *jresp; - void *context; // Hold Client Context when using session - int restfull; // request is resfull [uuid token provided] - int errcode; // http error code - struct AFB_config *config; // plugin may need access to config - struct afb_req *areq; -} AFB_request; - struct afb_hsrv_handler; struct MHD_Daemon; -- 2.16.6