summaryrefslogtreecommitdiff
path: root/sys/src/cmd/aux/wpa.c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@gmx.de>2013-07-18 15:30:53 +0200
committercinap_lenrek <cinap_lenrek@gmx.de>2013-07-18 15:30:53 +0200
commitb6122a4c42b4f078f671a62c95a8147e34ffb38c (patch)
tree6488b4f844ad48beca19121fe87c00ff82596e87 /sys/src/cmd/aux/wpa.c
parent24e8c78cb22952b5ba6dace99c5378cd7762b977 (diff)
wifi: make "auth" command non-blocking, let aux/wpa do the waiting for bss scan to complete.
Diffstat (limited to 'sys/src/cmd/aux/wpa.c')
-rw-r--r--sys/src/cmd/aux/wpa.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/sys/src/cmd/aux/wpa.c b/sys/src/cmd/aux/wpa.c
index 85cd9577c..61f765146 100644
--- a/sys/src/cmd/aux/wpa.c
+++ b/sys/src/cmd/aux/wpa.c
@@ -531,7 +531,7 @@ main(int argc, char *argv[])
char addr[128];
uchar *rsne;
int rsnelen;
- int n;
+ int n, try;
quotefmtinstall();
fmtinstall('H', Hfmt);
@@ -617,11 +617,14 @@ main(int argc, char *argv[])
fprint(2, "rsne: %.*H\n", rsnelen, rsne);
/*
- * we use write() instead of fprint so message gets written
- * at once and not chunked up on fprint buffer.
+ * we use write() instead of fprint so the message gets written
+ * at once and not chunked up on fprint buffer. bss scan might
+ * not be complete yet, so retry for 10 seconds.
*/
n = sprint((char*)buf, "auth %.*H", rsnelen, rsne);
- if(write(cfd, buf, n) != n)
+ for(try = 10; try >= 0 && write(cfd, buf, n) != n; try--)
+ sleep(1000);
+ if(try < 0)
sysfatal("write auth: %r");
if(!debug){