Commit a8b4a1e6 authored by Mikio Hara's avatar Mikio Hara

net: BUG section for ReadFrom, ReadFromIP methods of IPConn on "ip4" network

Fixes #3944.

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/13263043
parent d595b67a
...@@ -202,7 +202,7 @@ func TestPacketConnICMPEcho(t *testing.T) { ...@@ -202,7 +202,7 @@ func TestPacketConnICMPEcho(t *testing.T) {
if _, _, err := c.ReadFrom(rb); err != nil { if _, _, err := c.ReadFrom(rb); err != nil {
t.Fatalf("PacketConn.ReadFrom failed: %v", err) t.Fatalf("PacketConn.ReadFrom failed: %v", err)
} }
// TODO: fix issue 3944 // See BUG section.
//if net == "ip4" { //if net == "ip4" {
// rb = ipv4Payload(rb) // rb = ipv4Payload(rb)
//} //}
......
...@@ -11,6 +11,18 @@ import ( ...@@ -11,6 +11,18 @@ import (
"time" "time"
) )
// BUG(mikio): On every POSIX platform, reads from the "ip4" network
// using the ReadFrom or ReadFromIP method might not return a complete
// IPv4 packet, including its header, even if there is space
// available. This can occur even in cases where Read or ReadMsgIP
// could return a complete packet. For this reason, it is recommended
// that you do not uses these methods if it is important to receive a
// full packet.
//
// The Go 1 compatibliity guidelines make it impossible for us to
// change the behavior of these methods; use Read or ReadMsgIP
// instead.
func sockaddrToIP(sa syscall.Sockaddr) Addr { func sockaddrToIP(sa syscall.Sockaddr) Addr {
switch sa := sa.(type) { switch sa := sa.(type) {
case *syscall.SockaddrInet4: case *syscall.SockaddrInet4:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment