Date: Tuesday, November 14, 2017 @ 11:49:57
  Author: bpiotrowski
Revision: 309922

archrelease: copy trunk to extra-x86_64

Added:
  wpa_actiond/repos/extra-x86_64/
  
wpa_actiond/repos/extra-x86_64/0001-wpa_actiond-Wait-for-three-failed-PONGs-before-disco.patch
    (from rev 309921, 
wpa_actiond/trunk/0001-wpa_actiond-Wait-for-three-failed-PONGs-before-disco.patch)
  wpa_actiond/repos/extra-x86_64/PKGBUILD
    (from rev 309921, wpa_actiond/trunk/PKGBUILD)

-----------------------------------------------------------------+
 0001-wpa_actiond-Wait-for-three-failed-PONGs-before-disco.patch |   72 
++++++++++
 PKGBUILD                                                        |   34 ++++
 2 files changed, 106 insertions(+)

Copied: 
wpa_actiond/repos/extra-x86_64/0001-wpa_actiond-Wait-for-three-failed-PONGs-before-disco.patch
 (from rev 309921, 
wpa_actiond/trunk/0001-wpa_actiond-Wait-for-three-failed-PONGs-before-disco.patch)
===================================================================
--- 
extra-x86_64/0001-wpa_actiond-Wait-for-three-failed-PONGs-before-disco.patch    
                            (rev 0)
+++ 
extra-x86_64/0001-wpa_actiond-Wait-for-three-failed-PONGs-before-disco.patch    
    2017-11-14 11:49:57 UTC (rev 309922)
@@ -0,0 +1,72 @@
+From 8b74c8b3f69e501560e5f0c25cbcbc4aefcbc0ed Mon Sep 17 00:00:00 2001
+From: Emil Velikov <emil.l.veli...@gmail.com>
+Date: Mon, 21 Aug 2017 11:34:00 +0200
+Subject: [PATCH] wpa_actiond: Wait for three "failed" PONGs before
+ disconnecting
+
+When the system is very low on resources, select() may return 0 even
+when wpa_supplicant is alive and kicking.
+
+Don't disconnect as soon at that occurs - wait three times and clearly
+log it.
+
+Signed-off-by: Emil Velikov <emil.l.veli...@gmail.com>
+---
+ wpa_actiond.c | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+diff --git a/wpa_actiond.c b/wpa_actiond.c
+index d60d885..03a9d7f 100644
+--- a/wpa_actiond.c
++++ b/wpa_actiond.c
+@@ -292,6 +292,7 @@ static void loop(const char *iface, const char *ctrlpath, 
const int disconnect_t
+   /* path to control socket */
+   char *ctrlsock = NULL;
+   int ctrlsocklen;
++  int pong_failures = 0;
+ 
+   ssid[0] = '\0';
+   old_ssid[0] = '\0';
+@@ -359,6 +360,7 @@ static void loop(const char *iface, const char *ctrlpath, 
const int disconnect_t
+         }
+         logevent(WPA_ACTIOND_LOG_TERMINATE, iface, "");
+         state = WPA_ACTIOND_STATE_TERMINATED;
++        pong_failures = 0;
+         break;
+       case 0:
+         if (state == WPA_ACTIOND_STATE_CONNECTION_LOST) {
+@@ -372,8 +374,15 @@ static void loop(const char *iface, const char *ctrlpath, 
const int disconnect_t
+             reply_len = 0;
+           reply[reply_len] = '\0';
+           if(!str_match(reply, "PONG")) {
++            if (pong_failures <= 3) {
++              logevent(WPA_ACTIOND_LOG_CUSTOM_ERROR, iface, "wpa_supplicant 
failed to reply (PONG)");
++              pong_failures++;
++              break;
++            }
++
+             /* supplicant has been terminated */
+             if(state == WPA_ACTIOND_STATE_CONNECTED || state == 
WPA_ACTIOND_STATE_CONNECTION_LOST) {
++              logevent(WPA_ACTIOND_LOG_CUSTOM_ERROR, iface, "wpa_supplicant 
failed to reply three times in a row - disconnecting");
+               logevent(WPA_ACTIOND_LOG_DISCONNECTED, iface, ssid);
+               action(WPA_ACTIOND_ACTION_DISCONNECT, iface, ssid, idstr, 
wpa_ctrl_get_fd(ctrl), script);
+             }
+@@ -381,6 +390,7 @@ static void loop(const char *iface, const char *ctrlpath, 
const int disconnect_t
+             state = WPA_ACTIOND_STATE_TERMINATED;
+           }
+         }
++        pong_failures = 0;
+         break;
+       default:
+         /* event received */
+@@ -446,6 +456,7 @@ static void loop(const char *iface, const char *ctrlpath, 
const int disconnect_t
+             /* we are not interested in this event */
+             break;
+         }
++        pong_failures = 0;
+     }
+   }
+ 
+-- 
+2.15.0
+

Copied: wpa_actiond/repos/extra-x86_64/PKGBUILD (from rev 309921, 
wpa_actiond/trunk/PKGBUILD)
===================================================================
--- extra-x86_64/PKGBUILD                               (rev 0)
+++ extra-x86_64/PKGBUILD       2017-11-14 11:49:57 UTC (rev 309922)
@@ -0,0 +1,34 @@
+# $Id$
+# Maintainer: Thomas Bächler <tho...@archlinux.org>
+pkgname=wpa_actiond
+pkgver=1.4
+pkgrel=3
+pkgdesc="Daemon that connects to wpa_supplicant and handles connect and 
disconnect events"
+arch=('x86_64')
+url="http://projects.archlinux.org/wpa_actiond.git/";
+license=('GPL')
+depends=('glibc' 'wpa_supplicant')
+source=(https://sources.archlinux.org/other/wpa_actiond/${pkgname}-${pkgver}.tar.xz
+        
https://sources.archlinux.org/other/wpa_actiond/${pkgname}-${pkgver}.tar.xz.sig
+        0001-wpa_actiond-Wait-for-three-failed-PONGs-before-disco.patch)
+sha256sums=('e0e65e7c52a32796a0ff855ab18aa0b237d6b9afc87d4008c0380735abcb1a54'
+            'SKIP'
+            'b318ad3c2dcc65e204dfb5d21a034712fbbb801b062442869420bdf8a0060856')
+validpgpkeys=('A314827C4E4250A204CE6E13284FC34C8E4B1A25')  # Thomas Bächler 
+
+prepare() {
+  cd "${srcdir}/${pkgname}-${pkgver}"
+  patch -p1 -i 
"${srcdir}/0001-wpa_actiond-Wait-for-three-failed-PONGs-before-disco.patch"
+}
+
+build() {
+  cd "${srcdir}/${pkgname}-${pkgver}"
+  make CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}"
+}
+
+package() {
+  cd "${srcdir}/${pkgname}-${pkgver}"
+  
+  install -D -m755 wpa_actiond "${pkgdir}/usr/bin/wpa_actiond"
+}
+# vim:set ts=2 sw=2 et:

Reply via email to