Split reply_pending() into two parts so that a D-Bus reply can be
sent to the client waiting for a reply.
int __connman_service_disconnect_all(void);
void __connman_service_auto_connect(void);
gboolean __connman_service_remove(struct connman_service *service);
int __connman_service_disconnect_all(void);
void __connman_service_auto_connect(void);
gboolean __connman_service_remove(struct connman_service *service);
+void __connman_service_reply_dbus_pending(DBusMessage *pending, int error);
int __connman_service_provision_changed(const char *ident);
void __connman_service_set_config(struct connman_service *service,
int __connman_service_provision_changed(const char *ident);
void __connman_service_set_config(struct connman_service *service,
-static void reply_pending(struct connman_service *service, int error)
+void __connman_service_reply_dbus_pending(DBusMessage *pending, int error)
- remove_timeout(service);
-
- if (service->pending != NULL) {
if (error > 0) {
DBusMessage *reply;
if (error > 0) {
DBusMessage *reply;
- reply = __connman_error_failed(service->pending,
- error);
+ reply = __connman_error_failed(pending, error);
if (reply != NULL)
g_dbus_send_message(connection, reply);
} else {
if (reply != NULL)
g_dbus_send_message(connection, reply);
} else {
+ const char *sender, *path;
- sender = dbus_message_get_interface(service->pending);
+ sender = dbus_message_get_interface(pending);
+ path = dbus_message_get_path(pending);
- DBG("sender %s", sender);
+ DBG("sender %s path %s", sender, path);
if (g_strcmp0(sender, CONNMAN_MANAGER_INTERFACE) == 0)
if (g_strcmp0(sender, CONNMAN_MANAGER_INTERFACE) == 0)
- g_dbus_send_reply(connection, service->pending,
- DBUS_TYPE_OBJECT_PATH, &service->path,
+ g_dbus_send_reply(connection, pending,
+ DBUS_TYPE_OBJECT_PATH, &path,
- g_dbus_send_reply(connection, service->pending,
+ g_dbus_send_reply(connection, pending,
- dbus_message_unref(service->pending);
+ dbus_message_unref(pending);
+ }
+}
+
+static void reply_pending(struct connman_service *service, int error)
+{
+ remove_timeout(service);
+
+ if (service->pending != NULL) {
+ __connman_service_reply_dbus_pending(service->pending, error);
service->pending = NULL;
}
}
service->pending = NULL;
}
}