net: make WriteTo fail when UDPConn is already connected
Fixes #2773.
R=rsc
CC=golang-dev
https://golang.org/cl/5571056
diff --git a/src/pkg/net/udpsock_posix.go b/src/pkg/net/udpsock_posix.go
index b3a0761..fa3d29a 100644
--- a/src/pkg/net/udpsock_posix.go
+++ b/src/pkg/net/udpsock_posix.go
@@ -9,11 +9,14 @@
package net
import (
+ "errors"
"os"
"syscall"
"time"
)
+var ErrWriteToConnected = errors.New("use of WriteTo with pre-connected UDP")
+
func sockaddrToUDP(sa syscall.Sockaddr) Addr {
switch sa := sa.(type) {
case *syscall.SockaddrInet4:
@@ -182,6 +185,9 @@
if !c.ok() {
return 0, os.EINVAL
}
+ if c.fd.isConnected {
+ return 0, &OpError{"write", c.fd.net, addr, ErrWriteToConnected}
+ }
sa, err := addr.sockaddr(c.fd.family)
if err != nil {
return 0, &OpError{"write", c.fd.net, addr, err}