Merge "Forced line buffering & added verbose mode to cache warming."
diff --git a/cmds/.gitignore b/cmds/.gitignore
index 5189e0e..fcc39f5 100644
--- a/cmds/.gitignore
+++ b/cmds/.gitignore
@@ -1,4 +1,5 @@
*.o
+*.tmp.*
alivemonitor
asus_hosts
balloon
@@ -9,15 +10,19 @@
cpulog
device_stats.pb.h
dhcp-rogue
+dhcpnametax
+dhcpvendortax
dir-monitor
diskbench
dnsck
dnssd_hosts
+eddystone
freemegs
gsetsid
gstatic
host-*
http_bouncer
+ibeacon
ionice
isoping
isostream
diff --git a/cmds/Makefile b/cmds/Makefile
index 38557fa..60c1b5e 100644
--- a/cmds/Makefile
+++ b/cmds/Makefile
@@ -225,13 +225,14 @@
wifi_files: LIBS += -lnl-3 -lnl-genl-3 -lglib-2.0
host-wifi_files_test: host-wifi_files_test.o
host-wifi_files_test: LIBS += -lnl-3 -lnl-genl-3 -lglib-2.0
-dhcpvendortax: dhcpvendortax.o dhcpvendorlookup.o
-dhcpvendorlookup.c: dhcpvendorlookup.gperf
- $(GPERF) -G -C -t -L ANSI-C -N exact_match -K vendor_class --delimiters="|" \
- --includes --output-file=dhcpvendorlookup.c dhcpvendorlookup.gperf
-dhcpvendorlookup.o: CFLAGS += -Wno-missing-field-initializers
-host-dhcpvendorlookup.o: CFLAGS += -Wno-missing-field-initializers
-host-dhcpvendortax: host-dhcpvendortax.o host-dhcpvendorlookup.o
+dhcpvendortax: dhcpvendortax.o dhcpvendorlookup.tmp.o
+dhcpvendorlookup.tmp.c: dhcpvendorlookup.gperf
+ $(GPERF) -G -C -t -L ANSI-C -N exact_match -K vendor_class \
+ --delimiters="|" \
+ --includes --output-file=$@ $<
+dhcpvendorlookup.tmp.o: CFLAGS += -Wno-missing-field-initializers
+host-dhcpvendorlookup.tmp.o: CFLAGS += -Wno-missing-field-initializers
+host-dhcpvendortax: host-dhcpvendortax.o host-dhcpvendorlookup.tmp.o
dnssdmon: dnssdmon.o l2utils.o modellookup.o
dnssdmon: LIBS += -lnl-3 -lstdc++ -lm -lresolv
modellookup.c: modellookup.gperf
@@ -239,13 +240,14 @@
--includes --output-file=modellookup.c modellookup.gperf
modellookup.o: CFLAGS += -Wno-missing-field-initializers
host-modellookup.o: CFLAGS += -Wno-missing-field-initializers
-dhcpnametax: dhcpnametax.o hostnamelookup.o
-host-dhcpnametax: host-dhcpnametax.o host-hostnamelookup.o
-hostnamelookup.c: hostnamelookup.gperf
- $(GPERF) -G -C -t -T -L ANSI-C -n -c -N hostname_lookup -K name --delimiters="|" \
- --includes --output-file=hostnamelookup.c hostnamelookup.gperf
-hostnamelookup.o: CFLAGS += -Wno-missing-field-initializers
-host-hostnamelookup.o: CFLAGS += -Wno-missing-field-initializers
+dhcpnametax: dhcpnametax.o hostnamelookup.tmp.o
+host-dhcpnametax: host-dhcpnametax.o host-hostnamelookup.tmp.o
+hostnamelookup.tmp.c: hostnamelookup.gperf
+ $(GPERF) -G -C -t -T -L ANSI-C -n -c -N hostname_lookup -K name \
+ --delimiters="|" \
+ --includes --output-file=$@ $<
+hostnamelookup.tmp.o: CFLAGS += -Wno-missing-field-initializers
+host-hostnamelookup.tmp.o: CFLAGS += -Wno-missing-field-initializers
TESTS = $(wildcard test-*.sh) $(wildcard test-*.py) $(wildcard *_test.py) $(TEST_TARGETS)
@@ -269,5 +271,5 @@
$(TEST_TARGETS) \
$(HOST_TEST_TARGETS) \
$(ARCH_TARGETS) \
- *~ .*~ */*.pyc test_file *.pb.*
+ *~ .*~ */*.pyc test_file *.pb.* *.tmp.*
rm -rf test_dir
diff --git a/cmds/gstatic.c b/cmds/gstatic.c
index 15b23fc..518871f 100644
--- a/cmds/gstatic.c
+++ b/cmds/gstatic.c
@@ -85,11 +85,13 @@
total = 0;
while (total < count) {
rc = write(fd, buf + total, count - total);
- if (rc < 0)
- perror_die("write");
- else if (rc == 0)
+ if (rc < 0) {
+ perror("write");
+ return -1;
+ } else if (rc == 0) {
+ fprintf(stderr, "write: EOF\n");
return total;
- else
+ } else
total += rc;
}
@@ -125,8 +127,10 @@
socket_set_blocking(fd, false);
rc = connect(fd, addr->ai_addr, addr->ai_addrlen);
- if (rc < 0 && errno != EINPROGRESS)
- perror_die("connect");
+ if (rc < 0 && errno != EINPROGRESS) {
+ perror("connect");
+ return -1;
+ }
if (rc != 0) {
FD_ZERO(&writeset);
@@ -136,7 +140,8 @@
rc = select(fd + 1, NULL, &writeset, NULL, &timeout);
if (rc < 0) {
- perror_die("select");
+ perror("connect-select");
+ return -1;
} else if (rc == 0) {
/* timeout */
return -1;
@@ -156,27 +161,24 @@
ssize_t read_timeout(int fd, void *buf, size_t count, int timeout_ms)
{
- fd_set readset, exceptset;
+ fd_set readset;
struct timeval timeout;
int rc;
FD_ZERO(&readset);
FD_SET(fd, &readset);
- exceptset = readset;
timeout.tv_sec = timeout_ms / 1000;
timeout.tv_usec = (timeout_ms % 1000) * 1000;
- rc = select(fd + 1, &readset, NULL, &exceptset, &timeout);
+ rc = select(fd + 1, &readset, NULL, NULL, &timeout);
if (rc < 0) {
- perror_die("select");
+ perror("select");
+ return -1;
} else if (rc == 0) {
- /* timeout */
- return 0;
+ fprintf(stderr, "select: timed out\n");
+ return -1;
}
- if (FD_ISSET(fd, &exceptset))
- return 0;
-
return read(fd, buf, count);
}
@@ -198,7 +200,7 @@
rc = xwrite(fd, HTTP_REQUEST, sizeof(HTTP_REQUEST));
if (rc < (ssize_t)sizeof(HTTP_REQUEST))
- perror_die("write");
+ goto err;
rc = read_timeout(fd, http_response, sizeof(http_response), TIMEOUT_MS);
if (rc < 0)
@@ -223,6 +225,9 @@
int bad;
int rc;
+ // In case we get stuck in one of the blocking syscalls (write, read, etc)
+ alarm(60);
+
memset(&hints, 0, sizeof(hints));
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
@@ -241,8 +246,11 @@
int fd;
fd = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
- if (fd < 0)
- perror_die("socket");
+ if (fd < 0) {
+ perror("socket");
+ bad = 1;
+ continue;
+ }
rc = do_http_request(fd, res);
if (rc != 0)
diff --git a/cmds/statcatcher.cc b/cmds/statcatcher.cc
index f8f270c..184c725 100644
--- a/cmds/statcatcher.cc
+++ b/cmds/statcatcher.cc
@@ -23,7 +23,7 @@
#include "device_stats.pb.h"
-std::string multicast_addr = "FF30::8000:1";
+std::string multicast_addr = "FF12::8000:1";
const char *optstring = "i:f:";
std::string interface = "wan0";
std::string stat_file;
diff --git a/cmds/statpitcher.cc b/cmds/statpitcher.cc
index 7e1b989..412be5d 100644
--- a/cmds/statpitcher.cc
+++ b/cmds/statpitcher.cc
@@ -25,7 +25,7 @@
#define GOOG_PROTOCOL 0x8930
#define STAT_INTERVAL 60
-std::string multicast_addr = "FF30::8000:1";
+std::string multicast_addr = "FF12::8000:1";
uint8_t mc_mac[] = { 0x01, 0x00, 0x5e, 0x00, 0x00, 0x01 };
const char *optstring = "s:i:a:";
diff --git a/conman/connection_manager_test.py b/conman/connection_manager_test.py
index e651cb1..0297ca1 100755
--- a/conman/connection_manager_test.py
+++ b/conman/connection_manager_test.py
@@ -522,6 +522,7 @@
os.mkdir(os.path.join(tmp_dir, 'interfaces'))
moca_tmp_dir = tempfile.mkdtemp()
wpa_control_interface = tempfile.mkdtemp()
+ FrenzyWifi.WPACtrl.WIFIINFO_PATH = tempfile.mkdtemp()
for band, access_point in wlan_configs.iteritems():
write_wlan_config(config_dir, band, 'initial ssid', 'initial psk')
@@ -549,6 +550,7 @@
shutil.rmtree(config_dir)
shutil.rmtree(moca_tmp_dir)
shutil.rmtree(wpa_control_interface)
+ shutil.rmtree(FrenzyWifi.WPACtrl.WIFIINFO_PATH)
# pylint: disable=protected-access
connection_manager._wifi_show = old_wifi_show
connection_manager._get_quantenna_interfaces = old_gqi