net: test and fix support for 0-length datagram packets.
Fixes #274.
R=r
CC=jonathan.r.hudson
https://golang.org/cl/163072
diff --git a/src/pkg/net/fd.go b/src/pkg/net/fd.go
index e1592eb..733f957 100644
--- a/src/pkg/net/fd.go
+++ b/src/pkg/net/fd.go
@@ -386,6 +386,10 @@
}
break;
}
+ if fd.proto == syscall.SOCK_DGRAM && err == os.EOF {
+ // 0 in datagram protocol just means 0-length packet
+ err = nil
+ }
return;
}
@@ -433,7 +437,9 @@
}
err = nil;
nn := 0;
- for nn < len(p) {
+ first := true; // force at least one Write, to send 0-length datagram packets
+ for nn < len(p) || first {
+ first = false;
n, err = fd.sysfile.Write(p[nn:]);
if n > 0 {
nn += n