From: Patrik Flykt <[email protected]>

---
 src/agent.c   |   45 +++++++++++++++++++++++++++++++++++++++++++++
 src/connman.h |    2 ++
 2 files changed, 47 insertions(+)

diff --git a/src/agent.c b/src/agent.c
index 19c3882..e99f97e 100644
--- a/src/agent.c
+++ b/src/agent.c
@@ -195,6 +195,51 @@ static int agent_queue_message(struct connman_service 
*service,
        return agent_send_next_request();
 }
 
+void __connman_agent_cancel(struct connman_service *service)
+{
+       DBusMessage *message;
+       GList *item, *next;
+       struct agent_data *queued_req;
+
+       DBG("service %p", service);
+
+       item = agent_queue;
+
+       while (item != NULL) {
+               next = g_list_next(item);
+               queued_req = item->data;
+
+               if (queued_req->service == service || service == NULL) {
+                       agent_request_free(queued_req);
+                       agent_queue = g_list_delete_link(agent_queue, item);
+               }
+
+               item = next;
+       }
+
+       if (agent_request == NULL)
+               return;
+
+       if (agent_request->service != service && service != NULL)
+               return;
+
+       agent_request_free(agent_request);
+       agent_request = NULL;
+
+       if (agent_watch == 0)
+               return;
+
+       message = dbus_message_new_method_call(agent_sender, agent_path,
+                       CONNMAN_AGENT_INTERFACE, "Cancel");
+       if (message != NULL) {
+               dbus_message_set_no_reply(message, TRUE);
+               g_dbus_send_message(connection, message);
+       } else
+               connman_warn("Failed to send Cancel message to agent");
+
+       agent_send_next_request();
+}
+
 static connman_bool_t check_reply_has_dict(DBusMessage *reply)
 {
        const char *signature = DBUS_TYPE_ARRAY_AS_STRING
diff --git a/src/connman.h b/src/connman.h
index 305f09f..120de30 100644
--- a/src/connman.h
+++ b/src/connman.h
@@ -84,6 +84,8 @@ void __connman_counter_cleanup(void);
 
 struct connman_service;
 
+void __connman_agent_cancel(struct connman_service *service);
+
 int __connman_service_add_passphrase(struct connman_service *service,
                                        const gchar *passphrase);
 typedef void (* authentication_cb_t) (struct connman_service *service,
-- 
1.7.10.4

_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman

Reply via email to