summaryrefslogtreecommitdiffstats
path: root/src/dbus_handlers.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/dbus_handlers.c')
-rw-r--r--src/dbus_handlers.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/dbus_handlers.c b/src/dbus_handlers.c
index 8630f54..7e30fca 100644
--- a/src/dbus_handlers.c
+++ b/src/dbus_handlers.c
@@ -29,7 +29,7 @@ void on_method_generic_ret(void *data, const Eldbus_Message *msg, Eldbus_Pending
void on_method_get_network_info_ret(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED)
{
struct eulogium_data *eulogium = data; /* TODO replace this by making networks direct via ** */
- struct network_data *networks = eulogium->networks;
+ struct network_data *networks = NULL;
const char *errname, *errmsg;
Eldbus_Message_Iter *array, *net_struct;
char *obj_path, *tech, *ipv4, *ipv6, *ssid, *dummy;
@@ -48,7 +48,7 @@ void on_method_get_network_info_ret(void *data, const Eldbus_Message *msg, Eldbu
EINA_LOG_ERR("Message content does not match expected \"osssss\" signature. (%s)", eldbus_message_signature_get(msg));
break;
} else {
- networks = realloc(networks, (i + 1) * sizeof(struct network_data));
+ networks = realloc(networks, (i + 2) * sizeof(struct network_data));
if (!networks) {
EINA_LOG_ERR("Unable to allocate memory.");
} else {
@@ -60,10 +60,11 @@ void on_method_get_network_info_ret(void *data, const Eldbus_Message *msg, Eldbu
else
strncpy(networks[i].obj_path, obj_path, obj_pathsize);
- if (strncmp(tech, _TECH_ETHERNET, sizeof(_TECH_ETHERNET)))
- networks[i].tech = ETHERNET;
- if (strncmp(tech, _TECH_WIFI, sizeof(_TECH_WIFI)))
- networks[i].tech = WIFI;
+ networks[i].tech = UNKNOWN;
+ if (strcmp(tech, _TECH_ETHERNET))
+ networks[i].tech = TECH_ETHERNET;
+ if (strcmp(tech, _TECH_WIFI))
+ networks[i].tech = TECH_WIFI;
strncpy(networks[i].ipv4, ipv4, IPV4_MAX_LEN);
strncpy(networks[i].ipv6, ipv6, IPV6_MAX_LEN);
@@ -71,6 +72,8 @@ void on_method_get_network_info_ret(void *data, const Eldbus_Message *msg, Eldbu
}
i++;
}
+ networks[i].obj_path = NULL; /* sentinel */
+ eulogium->networks = networks;
}
void on_signal_network_info_changed_ret(void *data, const Eldbus_Message *msg)