diff options
author | Bui Nguyen Quoc Thanh <Thanh.BuiNguyenQuoc@vn.bosch.com> | 2020-03-13 10:41:01 +0700 |
---|---|---|
committer | Saya Sugiura <39760799+ssugiura@users.noreply.github.com> | 2020-07-06 10:04:07 +0900 |
commit | 472137c469bcd1faf2c6f12d9bb15e2675dd6870 (patch) | |
tree | dc8ba8534679e14b21fa70aafde34d0d8f5fa397 /src/gateway | |
parent | fbe9c0c0ee1b134ac335392ff18d239d69ab50c7 (diff) | |
download | DLT-daemon-472137c469bcd1faf2c6f12d9bb15e2675dd6870.tar.gz |
gateway: Improvement of handling Gateway config
In the current implementation, we believe in user to treat
General section as Mandatory. Hence system could be reset
due to memory of connections incorrectly.
At the moment, General could be handled as Optional with default value
of interval. It means General could be absent from config file.
Improvement is to raise WARNING to user, set default value and
update the number of connections properly.
Signed-off-by: Bui Nguyen Quoc Thanh <Thanh.BuiNguyenQuoc@vn.bosch.com>
Diffstat (limited to 'src/gateway')
-rw-r--r-- | src/gateway/dlt_gateway.c | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/src/gateway/dlt_gateway.c b/src/gateway/dlt_gateway.c index 005716e..7cad893 100644 --- a/src/gateway/dlt_gateway.c +++ b/src/gateway/dlt_gateway.c @@ -672,20 +672,33 @@ int dlt_gateway_configure(DltGateway *gateway, char *config_file, int verbose) /* get number of entries and allocate memory to store information */ ret = dlt_config_file_get_num_sections(file, &num_sections); - if (ret != 0) { dlt_config_file_release(file); dlt_log(LOG_ERR, "Invalid number of sections in configuration file\n"); return DLT_RETURN_ERROR; } - /* - * Since the General section is also counted in num_sections, - * so number of connections must be number of sections subtracts 1. - */ - gateway->num_connections = num_sections - 1; - gateway->connections = calloc(sizeof(DltGatewayConnection), - gateway->num_connections); + ret = dlt_config_file_check_section_name_exists(file, DLT_GATEWAY_GENERAL_SECTION_NAME); + if (ret == -1) { + /* + * No General section in configuration file. + * Try to use default for interval. + */ + gateway->num_connections = num_sections; + dlt_vlog(LOG_WARNING, + "Missing General section in gateway. Using default interval %d (secs)\n", + gateway->interval); + } + else { + /* + * Since the General section is also counted in num_sections, + * so number of connections must be number of sections - 1. + */ + gateway->num_connections = num_sections - 1; + } + + gateway->connections = calloc(gateway->num_connections, + sizeof(DltGatewayConnection)); if (gateway->connections == NULL) { dlt_config_file_release(file); @@ -741,8 +754,7 @@ int dlt_gateway_configure(DltGateway *gateway, char *config_file, int verbose) if (ret != 0) dlt_vlog(LOG_ERR, - "Configuration %s = %s is invalid.\n" - "Using default.\n", + "Configuration %s = %s is invalid. Using default.\n", general_entries[g].key, value); } } |