aboutsummaryrefslogtreecommitdiffstats
path: root/package/network/services/hostapd/files/wps-hotplug.sh
diff options
context:
space:
mode:
Diffstat (limited to 'package/network/services/hostapd/files/wps-hotplug.sh')
-rw-r--r--package/network/services/hostapd/files/wps-hotplug.sh21
1 files changed, 14 insertions, 7 deletions
diff --git a/package/network/services/hostapd/files/wps-hotplug.sh b/package/network/services/hostapd/files/wps-hotplug.sh
index d00939d769..073bdd1868 100644
--- a/package/network/services/hostapd/files/wps-hotplug.sh
+++ b/package/network/services/hostapd/files/wps-hotplug.sh
@@ -38,13 +38,20 @@ wps_catch_credentials() {
done
}
-if [ "$ACTION" = "pressed" -a "$BUTTON" = "wps" ]; then
- wps_done=0
- ubusobjs="$( ubus -S list hostapd.* )"
- for ubusobj in $ubusobjs; do
- ubus -S call $ubusobj wps_start && wps_done=1
- done
- [ $wps_done = 0 ] || return 0
+if [ "$ACTION" = "released" ] && [ "$BUTTON" = "wps" ]; then
+ # If the button was pressed for 3 seconds or more, trigger WPS on
+ # wpa_supplicant only, no matter if hostapd is running or not. If
+ # was pressed for less than 3 seconds, try triggering on
+ # hostapd. If there is no hostapd instance to trigger it on or WPS
+ # is not enabled on them, trigger it on wpa_supplicant.
+ if [ "$SEEN" -lt 3 ] ; then
+ wps_done=0
+ ubusobjs="$( ubus -S list hostapd.* )"
+ for ubusobj in $ubusobjs; do
+ ubus -S call $ubusobj wps_start && wps_done=1
+ done
+ [ $wps_done = 0 ] || return 0
+ fi
wps_done=0
ubusobjs="$( ubus -S list wpa_supplicant.* )"
for ubusobj in $ubusobjs; do