chiark
/
gitweb
/
~mdw
/
userv-utils
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ipif fixes
[userv-utils]
/
ipif
/
service.c
diff --git
a/ipif/service.c
b/ipif/service.c
index 670b44706be087221e882eb69b9c61cf5e02ecef..b9d8b44cbd56ceb1188a9a79b48459538b4dddd1 100644
(file)
--- a/
ipif/service.c
+++ b/
ipif/service.c
@@
-719,11
+719,13
@@
static void setnonblock(int fd) {
}
static void rx_packet(const uint8_t *packet, int len) {
}
static void rx_packet(const uint8_t *packet, int len) {
+ if (!len)
+ return;
for (;;) {
int r= write(tunfd, packet, len);
if (r<0) {
if (errno==EINTR) continue;
for (;;) {
int r= write(tunfd, packet, len);
if (r<0) {
if (errno==EINTR) continue;
- if (errno==EAGAIN) return; /* oh well */
+ if (errno==EAGAIN
|| errno==ENOMEM
) return; /* oh well */
sysfatal("error writing packet to tun (transmitting)");
}
assert(r==len);
sysfatal("error writing packet to tun (transmitting)");
}
assert(r==len);