afb-config: Increase the default timeout of sessions
[src/app-framework-binder.git] / src / afb-config.c
index 016da83..b5ce52c 100644 (file)
@@ -38,8 +38,8 @@
 #endif
 
 // default
-#define DEFLT_CNTX_TIMEOUT  3600       // default Client Connection
-                                       // Timeout
+#define DEFLT_CNTX_TIMEOUT  32000000   // default Client Connection
+                                       // Timeout: few more than one year
 #define DEFLT_API_TIMEOUT   20         // default Plugin API Timeout [0=NoLimit
                                        // for Debug Only]
 #define DEFLT_CACHE_TIMEOUT 100000     // default Static File Chache
@@ -754,12 +754,47 @@ void afb_config_dump(struct afb_config *config)
 #undef NN
 }
 
+static void on_environment_list(struct afb_config_list **to, const char *name)
+{
+       char *value = getenv(name);
+
+       if (value)
+               list_add(to, value);
+}
+
+static void on_environment_enum(int *to, const char *name, struct enumdesc *desc)
+{
+       char *value = getenv(name);
+
+       if (value) {
+               while (desc->name) {
+                       if (strcmp(desc->name, value))
+                               desc++;
+                       else {
+                               *to = desc->value;
+                               return;
+                       }
+               }
+               WARNING("Unknown value %s for environment variable %s, ignored", value, name);
+       }
+}
+
+static void parse_environment(struct afb_config *config)
+{
+       on_environment_enum(&config->tracereq, "AFB_TRACEREQ", tracereq_desc);
+       on_environment_enum(&config->traceditf, "AFB_TRACEDITF", traceditf_desc);
+       on_environment_enum(&config->tracesvc, "AFB_TRACESVC", tracesvc_desc);
+       on_environment_enum(&config->traceevt, "AFB_TRACEEVT", traceevt_desc);
+       on_environment_list(&config->ldpaths, "AFB_LDPATHS");
+}
+
 struct afb_config *afb_config_parse_arguments(int argc, char **argv)
 {
        struct afb_config *result;
 
        result = calloc(1, sizeof *result);
 
+       parse_environment(result);
        parse_arguments(argc, argv, result);
        fulfill_config(result);
        if (verbosity >= 3)