Cumulative patch from commit 4aa9c156e583c64cf5d90751ec888c478e1155c2
4aa9c15 dbus: Close dbus dict just after appending data
b8d87ed nl80211: Disable Probe Request reporting for static AP during deinit
bf144cf nl80211: Do not change iftype for static AP interface
61157af wext: Add signal_poll callback
af65bc3 P2P: Use ssid instead of wpa_ssid to find GO iface
6c460ea Add RSN cipher/AKM suite attributes into RADIUS messages
cdffd72 Add WLAN-HESSID into RADIUS messages
69002fb Add Mobility-Domain-Id into RADIUS messages
4a0693a dbus: Declare and implement GroupFinished as for GroupStarted
2fa980f P2P: Cancel pending action TX radio work on p2p_cancel
8b627b7 Fix writing of the wowlan_triggers parameter
Bug: 16877362
Change-Id: Ifbb8902e2634470ba212a82cd1ca49880633d961
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
diff --git a/wpa_supplicant/config_file.c b/wpa_supplicant/config_file.c
index 98855d8..73ad57a 100644
--- a/wpa_supplicant/config_file.c
+++ b/wpa_supplicant/config_file.c
@@ -1170,7 +1170,7 @@
config->tdls_external_control);
if (config->wowlan_triggers)
- fprintf(f, "wowlan_triggers=\"%s\"\n",
+ fprintf(f, "wowlan_triggers=%s\n",
config->wowlan_triggers);
if (config->bgscan)
diff --git a/wpa_supplicant/dbus/dbus_new.c b/wpa_supplicant/dbus/dbus_new.c
index dab6c46..e9f6589 100644
--- a/wpa_supplicant/dbus/dbus_new.c
+++ b/wpa_supplicant/dbus/dbus_new.c
@@ -946,37 +946,49 @@
void wpas_dbus_signal_p2p_group_removed(struct wpa_supplicant *wpa_s,
const char *role)
{
-
+ int error = 1;
DBusMessage *msg;
- DBusMessageIter iter;
+ DBusMessageIter iter, dict_iter;
struct wpas_dbus_priv *iface = wpa_s->global->dbus;
- char *ifname = wpa_s->ifname;
/* Do nothing if the control interface is not turned on */
if (iface == NULL)
return;
- msg = dbus_message_new_signal(wpa_s->dbus_new_path,
+ if (!wpa_s->dbus_groupobj_path)
+ return;
+
+ msg = dbus_message_new_signal(wpa_s->parent->dbus_new_path,
WPAS_DBUS_NEW_IFACE_P2PDEVICE,
"GroupFinished");
if (msg == NULL)
return;
dbus_message_iter_init_append(msg, &iter);
+ if (!wpa_dbus_dict_open_write(&iter, &dict_iter))
+ goto nomem;
- if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &ifname)) {
- wpa_printf(MSG_ERROR, "dbus: Failed to construct GroupFinished"
- "signal -not enough memory for ifname ");
- goto err;
- }
+ if (!wpa_dbus_dict_append_object_path(&dict_iter,
+ "interface_object",
+ wpa_s->dbus_new_path))
+ goto nomem;
- if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &role))
- wpa_printf(MSG_ERROR, "dbus: Failed to construct GroupFinished"
- "signal -not enough memory for role ");
- else
- dbus_connection_send(iface->con, msg, NULL);
+ if (!wpa_dbus_dict_append_string(&dict_iter, "role", role))
+ goto nomem;
-err:
+ if (!wpa_dbus_dict_append_object_path(&dict_iter, "group_object",
+ wpa_s->dbus_groupobj_path) ||
+ !wpa_dbus_dict_close_write(&iter, &dict_iter))
+ goto nomem;
+
+ error = 0;
+ dbus_connection_send(iface->con, msg, NULL);
+
+nomem:
+ if (error > 0)
+ wpa_printf(MSG_ERROR,
+ "dbus: Failed to construct GroupFinished");
+
dbus_message_unref(msg);
}
@@ -3140,8 +3152,7 @@
},
{ "GroupFinished", WPAS_DBUS_NEW_IFACE_P2PDEVICE,
{
- { "ifname", "s", ARG_OUT },
- { "role", "s", ARG_OUT },
+ { "properties", "a{sv}", ARG_OUT },
END_ARGS
}
},
diff --git a/wpa_supplicant/dbus/dbus_new_handlers_p2p.c b/wpa_supplicant/dbus/dbus_new_handlers_p2p.c
index 516551a..c9ecc7b 100644
--- a/wpa_supplicant/dbus/dbus_new_handlers_p2p.c
+++ b/wpa_supplicant/dbus/dbus_new_handlers_p2p.c
@@ -830,15 +830,15 @@
wpa_s->conf->p2p_no_group_iface))
goto err_no_mem;
- if (!wpa_dbus_dict_close_write(&variant_iter, &dict_iter) ||
- !dbus_message_iter_close_container(iter, &variant_iter))
- goto err_no_mem;
-
/* P2P Search Delay */
if (!wpa_dbus_dict_append_uint32(&dict_iter, "p2p_search_delay",
wpa_s->conf->p2p_search_delay))
goto err_no_mem;
+ if (!wpa_dbus_dict_close_write(&variant_iter, &dict_iter) ||
+ !dbus_message_iter_close_container(iter, &variant_iter))
+ goto err_no_mem;
+
return TRUE;
err_no_mem:
diff --git a/wpa_supplicant/notify.c b/wpa_supplicant/notify.c
index 7ba1dec..3b730cf 100644
--- a/wpa_supplicant/notify.c
+++ b/wpa_supplicant/notify.c
@@ -438,9 +438,9 @@
const struct wpa_ssid *ssid,
const char *role)
{
- wpas_dbus_unregister_p2p_group(wpa_s, ssid);
-
wpas_dbus_signal_p2p_group_removed(wpa_s, role);
+
+ wpas_dbus_unregister_p2p_group(wpa_s, ssid);
}
diff --git a/wpa_supplicant/p2p_supplicant.c b/wpa_supplicant/p2p_supplicant.c
index f1269ad..d91877c 100644
--- a/wpa_supplicant/p2p_supplicant.c
+++ b/wpa_supplicant/p2p_supplicant.c
@@ -967,16 +967,8 @@
}
-static void wpas_p2p_send_action_tx_status(struct wpa_supplicant *wpa_s,
- unsigned int freq,
- const u8 *dst, const u8 *src,
- const u8 *bssid,
- const u8 *data, size_t data_len,
- enum offchannel_send_action_result
- result)
+static void wpas_p2p_action_tx_clear(struct wpa_supplicant *wpa_s)
{
- enum p2p_send_action_result res = P2P_SEND_ACTION_SUCCESS;
-
if (wpa_s->p2p_send_action_work) {
struct send_action_work *awork;
awork = wpa_s->p2p_send_action_work->ctx;
@@ -999,6 +991,20 @@
wpa_s, NULL);
}
}
+}
+
+
+static void wpas_p2p_send_action_tx_status(struct wpa_supplicant *wpa_s,
+ unsigned int freq,
+ const u8 *dst, const u8 *src,
+ const u8 *bssid,
+ const u8 *data, size_t data_len,
+ enum offchannel_send_action_result
+ result)
+{
+ enum p2p_send_action_result res = P2P_SEND_ACTION_SUCCESS;
+
+ wpas_p2p_action_tx_clear(wpa_s);
if (wpa_s->global->p2p == NULL || wpa_s->global->p2p_disabled)
return;
@@ -3706,7 +3712,7 @@
s->mode != WPAS_MODE_P2P_GROUP_FORMATION)
continue;
if (s->ssid_len != ssid_len ||
- os_memcmp(s, s->ssid, ssid_len) != 0)
+ os_memcmp(ssid, s->ssid, ssid_len) != 0)
continue;
return wpa_s;
}
@@ -5684,6 +5690,8 @@
if (!offchannel_pending_action_tx(wpa_s))
return;
+ wpas_p2p_action_tx_clear(wpa_s);
+
wpa_printf(MSG_DEBUG, "P2P: Drop pending Action TX due to new "
"operation request");
offchannel_clear_pending_action_tx(wpa_s);