fix file posting
authorJosé Bollo <jose.bollo@iot.bzh>
Thu, 7 Apr 2016 09:53:43 +0000 (11:53 +0200)
committerJosé Bollo <jose.bollo@iot.bzh>
Thu, 7 Apr 2016 09:53:43 +0000 (11:53 +0200)
Change-Id: If7e0aa3122af3a308a8441b518021f8a5cbe9473
Signed-off-by: José Bollo <jose.bollo@iot.bzh>
plugins/samples/HelloWorld.c
plugins/samples/SamplePost.c
src/afb-hreq.c
src/local-def.h

index fd780e2..e29c22f 100644 (file)
@@ -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 */
index 58a2a8b..8a1b477 100644 (file)
@@ -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 */
index aff204d..5ac4584 100644 (file)
@@ -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)
index 5735f6a..fcab6ad 100644 (file)
 /* 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;