Add the default value for error handler of invalid key 39/161939/7 accepted/tizen/4.0/unified/20171130.063700 submit/tizen_4.0/20171130.004232
authorYoungHun Kim <yh8004.kim@samsung.com>
Tue, 28 Nov 2017 08:48:44 +0000 (17:48 +0900)
committerYoungHun Kim <yh8004.kim@samsung.com>
Wed, 29 Nov 2017 10:18:32 +0000 (19:18 +0900)
Change-Id: Ibcdc5b2bb750e2517efa03e7cf899755f1a1f4c7

server/include/muse_server_config.h
server/src/muse_server_config.c
server/src/muse_server_private.c

index 9b22439..dfcdb71 100644 (file)
@@ -32,17 +32,25 @@ extern "C" {
 #define CONFFILE SYSCONFDIR"/multimedia/mused.conf"
 #define MUSE_LOG "muse:logfile"
 #define MUSE_LOCK "muse:lockfile"
-#define MUSE_MIN_TIMEOUT "muse:min_timeout"
-#define MUSE_MAX_TIMEOUT "muse:max_timeout"
-#define MEMORY_THRESHOLD "muse:memory_threshold"
+#define MUSE_WATCHDOG_MIN_TIMEOUT "muse:min_timeout"
+#define MUSE_WATCHDOG_MAX_TIMEOUT "muse:max_timeout"
+#define MUSE_MEMORY_THRESHOLD "muse:memory_threshold"
 #define MUSE_GST "muse:gstparam"
+
 #define INI_PARSER_COLON ":"
 #define PATH "path"
 #define PRELOADED "preloaded"
 #define TIMEOUT "timeout"
-#define DIABLE_WATCHDOG_API "disable_watchdog_api"
+#define DIABLE_WATCHDOG_API_INDEX "disable_watchdog_api"
 #define MAX_INSTANCE "max_instance"
 
+#define DEFAULT_WATCHDOG_MIN_TIMEOUT 5
+#define DEFAULT_WATCHDOG_MAX_TIMEOUT 60
+#define DEFAULT_DISPATCH_WATCHDOG_TIMEOUT 10
+#define DEFAULT_MEMORY_LEAK_THRESHOLD 50000 /* 50MB */
+#define DEFAULT_WATCHDOG_DISABLED_API_INDEX -1 /* Watchdog is applied to all dispatcher functions */
+#define DEFAULT_MAX_INSTANCE -1 /* Unlimited */
+
 typedef struct host_info {
        char *path;
        char *preloaded;
index c19c2da..e0c4857 100644 (file)
 
 #include "muse_server_private.h"
 
+static char *_ms_config_get_str(dictionary *d, const char *key, char *def);
+static int _ms_config_get_int(dictionary *d, const char *key, int def);
 static int _ms_config_parser(ms_config_t *conf);
 
+static char *_ms_config_get_str(dictionary *d, const char *key, char *def)
+{
+       char *str = NULL;
+
+       g_return_val_if_fail(d, NULL);
+       g_return_val_if_fail(key, NULL);
+
+       str = iniparser_getstring(d, key, def);
+       if (!str) {
+               LOGE("Error - iniparser_getstring (%s)", key);
+               return NULL;
+       }
+
+       return strdup(str);
+}
+
+static int _ms_config_get_int(dictionary *d, const char *key, int def)
+{
+       g_return_val_if_fail(d, PARSE_ERROR);
+       g_return_val_if_fail(key, PARSE_ERROR);
+
+       return iniparser_getint(d, key, def);
+}
+
 static int _ms_config_parser(ms_config_t *conf)
 {
-       int host_cnt;
+       int host_idx;
        char *host = NULL;
        char *str = NULL;
        char *ptr = NULL;
        char *key = NULL;
-       char gst_param_value[MUSE_MSG_LEN_MAX];
+       char gst_param_key[MUSE_MSG_LEN_MAX];
 
        g_return_val_if_fail(conf, PARSE_ERROR);
 
        conf->muse_dict = iniparser_load(CONFFILE);
        g_return_val_if_fail(conf->muse_dict, PARSE_ERROR);
 
-       str = iniparser_getstring(conf->muse_dict, MUSE_HOST, NULL);
-       if (!str) {
-               LOGE("Error - iniparser_getstring (%s)", MUSE_HOST);
-               goto out;
-       }
-
-       conf->hosts = strdup(str);
+       conf->hosts = _ms_config_get_str(conf->muse_dict, MUSE_HOST, NULL);
        if (!conf->hosts) {
                LOGE("Error - hosts allocation");
                goto out;
        }
 
-       str = iniparser_getstring(conf->muse_dict, MUSE_LOG, NULL);
-       if (!str) {
-               LOGE("Error - iniparser_getstring (%s)", MUSE_LOG);
-               goto out;
-       }
-
-       if (strncmp(str, MUSE_USE_LOG, strlen(MUSE_USE_LOG)) == 0)
+       str = _ms_config_get_str(conf->muse_dict, MUSE_LOG, NULL);
+       if (str && strncmp(str, MUSE_USE_LOG, strlen(MUSE_USE_LOG)) == 0)
                conf->log_enabled = TRUE;
        else
                conf->log_enabled = FALSE;
 
-       str = iniparser_getstring(conf->muse_dict, MUSE_LOCK, NULL);
-       if (!str) {
-               LOGE("Error - iniparser_getstring (%s)", MUSE_LOCK);
-               goto out;
-       }
-
-       conf->lockfile = strdup(str);
+       conf->lockfile = _ms_config_get_str(conf->muse_dict, MUSE_LOCK, NULL);
        if (!conf->lockfile) {
                LOGE("Error - lockfile allocation");
                goto out;
        }
 
-       str = iniparser_getstring(conf->muse_dict, MUSE_MIN_TIMEOUT, NULL);
-       if (!str) {
-               LOGE("Error - iniparser_getstring (%s)", MUSE_MIN_TIMEOUT);
-               goto out;
-       }
+       conf->min_timeout = _ms_config_get_int(conf->muse_dict, MUSE_WATCHDOG_MIN_TIMEOUT, DEFAULT_WATCHDOG_MIN_TIMEOUT);
 
-       conf->min_timeout = atoi(str);
-       if (!conf->min_timeout) {
-               LOGE("Error - Get minimum timeout");
-               goto out;
-       }
+       conf->max_timeout = _ms_config_get_int(conf->muse_dict, MUSE_WATCHDOG_MAX_TIMEOUT, DEFAULT_WATCHDOG_MAX_TIMEOUT);
 
-       str = iniparser_getstring(conf->muse_dict, MUSE_MAX_TIMEOUT, NULL);
-       if (!str) {
-               LOGE("Error - iniparser_getstring (%s)", MUSE_MAX_TIMEOUT);
-               goto out;
-       }
+       conf->memory_threshold = _ms_config_get_int(conf->muse_dict, MUSE_MEMORY_THRESHOLD, DEFAULT_MEMORY_LEAK_THRESHOLD);
 
-       conf->max_timeout = atoi(str);
-       if (!conf->max_timeout) {
-               LOGE("Error - Get maximum timeout");
-               goto out;
-       }
-
-       str = iniparser_getstring(conf->muse_dict, MEMORY_THRESHOLD, NULL);
-       if (!str) {
-               LOGE("Error - iniparser_getstring (%s)", MEMORY_THRESHOLD);
-               goto out;
-       }
-
-       conf->memory_threshold = atoi(str);
-       if (conf->memory_threshold <= 0) {
-               LOGE("Error - Check the memory threshold [%d]", conf->memory_threshold);
-               goto out;
-       }
+       for (conf->gst_param_cnt = 0; conf->gst_param_cnt < MUSE_PARAM_MAX; conf->gst_param_cnt++) {
+               memset(gst_param_key, 0, MUSE_MSG_LEN_MAX);
+               snprintf(gst_param_key, strlen(MUSE_GST) + 3, "%s%d", MUSE_GST, conf->gst_param_cnt + 1);
 
-       conf->gst_param_cnt = 0;
-       for (; conf->gst_param_cnt < MUSE_PARAM_MAX; conf->gst_param_cnt++) {
-               memset(gst_param_value, 0, MUSE_MSG_LEN_MAX);
-               snprintf(gst_param_value, strlen(MUSE_GST) + 3, "%s%d", MUSE_GST, conf->gst_param_cnt + 1);
+               conf->gst_param_str[conf->gst_param_cnt] = _ms_config_get_str(conf->muse_dict, gst_param_key, NULL);
 
-               str = iniparser_getstring(conf->muse_dict, gst_param_value, NULL);
-               g_strstrip(str);
-               if (str == NULL || strlen(str) == 0) {
+               if (!conf->gst_param_str[conf->gst_param_cnt]) {
                        LOGD("updated gst_param #: %d", conf->gst_param_cnt);
                        break;
                }
-
-               conf->gst_param_str[conf->gst_param_cnt] = strdup(str);
-               if (!conf->gst_param_str[conf->gst_param_cnt]) {
-                       LOGE("Error - gst param allocation");
-                       goto out;
-               }
-               LOGD("gstparam%d: %s",
-                       conf->gst_param_cnt + 1, conf->gst_param_str[conf->gst_param_cnt]);
+               LOGD("gstparam%d: %s", conf->gst_param_cnt + 1, conf->gst_param_str[conf->gst_param_cnt]);
        }
 
        conf->host_cnt = 0;
        host = strtok_r(conf->hosts, INI_PARSER_COMMA, &ptr);
 
        while (host) {
-               host_cnt = conf->host_cnt;
+               host_idx = conf->host_cnt;
                g_strstrip(host);
-               conf->host[host_cnt] = strdup(host);
-               LOGD("host: %s", conf->host[host_cnt]);
+               conf->host[host_idx] = strdup(host);
+               LOGD("host: %s", conf->host[host_idx]);
                key = (char *) malloc(MUSE_MSG_LEN_MAX);
                if (!key) {
                        LOGE("Error - null key");
                        goto out;
                }
 
-               /* path */
-               snprintf(key, MUSE_MSG_LEN_MAX, "%s%s%s", host, INI_PARSER_COLON, PATH);
-
-               conf->host_infos[host_cnt] = (host_info_t *) calloc(1, sizeof(host_info_t));
-               if (!conf->host_infos[host_cnt]) {
+               conf->host_infos[host_idx] = (host_info_t *) calloc(1, sizeof(host_info_t));
+               if (!conf->host_infos[host_idx]) {
                        LOGE("Error - null type");
                        goto out;
                }
 
-               conf->host_infos[host_cnt]->path = strdup(iniparser_getstring(conf->muse_dict, key, NULL));
-               if (!conf->host_infos[host_cnt]->path) {
+               /* path */
+               snprintf(key, MUSE_MSG_LEN_MAX, "%s%s%s", host, INI_PARSER_COLON, PATH);
+               conf->host_infos[host_idx]->path = _ms_config_get_str(conf->muse_dict, key, NULL);
+               if (!conf->host_infos[host_idx]->path) {
                        LOGE("Error - null path");
                        goto out;
                }
 
-               LOGD("[%d] %s", host_cnt, conf->host_infos[host_cnt]->path);
+               LOGD("[%d] %s", host_idx, conf->host_infos[host_idx]->path);
 
                /* preloaded */
                snprintf(key, MUSE_MSG_LEN_MAX, "%s%s%s", host, INI_PARSER_COLON, PRELOADED);
-
-               conf->host_infos[host_cnt]->preloaded = strdup(iniparser_getstring(conf->muse_dict, key, NULL));
-               if (!conf->host_infos[host_cnt]->preloaded) {
+               conf->host_infos[host_idx]->preloaded = _ms_config_get_str(conf->muse_dict, key, NULL);
+               if (!conf->host_infos[host_idx]->preloaded) {
                        LOGE("Error - null preloaded");
                        goto out;
                }
 
                /* timeout */
                snprintf(key, MUSE_MSG_LEN_MAX, "%s%s%s", host, INI_PARSER_COLON, TIMEOUT);
-
-               str = iniparser_getstring(conf->muse_dict, key, NULL);
-               if (!str) {
-                       LOGE("Error - iniparser_getstring (%s)", key);
-                       goto out;
-               }
-
-               conf->host_infos[host_cnt]->timeout = atoi(str);
-               if (conf->host_infos[host_cnt]->timeout < conf->min_timeout ||
-                       conf->host_infos[host_cnt]->timeout > conf->max_timeout) {
-                       LOGE("Error - set timeout value [%d] ( %d ~ %d s )", conf->host_infos[host_cnt]->timeout, conf->min_timeout, conf->max_timeout);
+               conf->host_infos[host_idx]->timeout = _ms_config_get_int(conf->muse_dict, key, DEFAULT_DISPATCH_WATCHDOG_TIMEOUT);
+               if (conf->host_infos[host_idx]->timeout < conf->min_timeout || conf->host_infos[host_idx]->timeout > conf->max_timeout) {
+                       LOGE("Error - set timeout value [%d] ( %d ~ %d s )", conf->host_infos[host_idx]->timeout, conf->min_timeout, conf->max_timeout);
                        goto out;
                }
 
                /* disable_watchdog_api */
-               snprintf(key, MUSE_MSG_LEN_MAX, "%s%s%s", host, INI_PARSER_COLON, DIABLE_WATCHDOG_API);
-
-               str = iniparser_getstring(conf->muse_dict, key, NULL);
-               if (!str) {
-                       LOGE("Error - iniparser_getstring (%s)", key);
-                       goto out;
-               }
-
-               conf->host_infos[host_cnt]->disable_watchdog_api = atoi(str);
+               snprintf(key, MUSE_MSG_LEN_MAX, "%s%s%s", host, INI_PARSER_COLON, DIABLE_WATCHDOG_API_INDEX);
+               conf->host_infos[host_idx]->disable_watchdog_api = _ms_config_get_int(conf->muse_dict, key, DEFAULT_WATCHDOG_DISABLED_API_INDEX);
 
                /* max instance */
                snprintf(key, MUSE_MSG_LEN_MAX, "%s%s%s", host, INI_PARSER_COLON, MAX_INSTANCE);
-
-               str = iniparser_getstring(conf->muse_dict, key, NULL);
-               if (!str) {
-                       LOGE("Error - iniparser_getstring (%s)", key);
-                       goto out;
-               }
-
-               conf->host_infos[host_cnt]->max_instance = atoi(str);
+               conf->host_infos[host_idx]->max_instance = _ms_config_get_int(conf->muse_dict, key, DEFAULT_MAX_INSTANCE);
 
                host = strtok_r(NULL, INI_PARSER_COMMA, &ptr);
                conf->host_cnt++;
index 7a4e08c..ef697f8 100644 (file)
@@ -60,7 +60,7 @@ static int _ms_run(void)
        /* First, check whether the existing file is locked. */
        fd = open(ms_get_instance()->conf->lockfile, O_RDONLY);
        if (fd == -1 && errno != ENOENT) {
-               /* Cannot open file, but it's not because the file doesn't exist. */
+               /* Cannot open file even though file exists. */
                char msg[1024];
                snprintf(msg, sizeof(msg), "datserver: Cannot open lock file %s", ms_get_instance()->conf->lockfile);
                LOGE("open failed : %s", msg);