aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosé Bollo <jose.bollo@iot.bzh>2016-04-07 11:53:43 +0200
committerJosé Bollo <jose.bollo@iot.bzh>2016-04-07 11:53:43 +0200
commit94a5b505f7ef7760fcfa7b824ee49758eb63a9e8 (patch)
treed16ce96ae81e08d1b157461f1e168c3ee00f7f40
parentfc19b7d7974f9c64dffc40e180464d595a9805cd (diff)
fix file posting
Change-Id: If7e0aa3122af3a308a8441b518021f8a5cbe9473 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
-rw-r--r--plugins/samples/HelloWorld.c3
-rw-r--r--plugins/samples/SamplePost.c3
-rw-r--r--src/afb-hreq.c7
-rw-r--r--src/local-def.h27
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 : "<empty-string>", 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 : "<empty-string>", 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;