]> Cypherpunks repositories - gostls13.git/commitdiff
syscall: add missing SendmsgN for NaCl
authorMikio Hara <mikioh.mikioh@gmail.com>
Mon, 28 Apr 2014 02:34:52 +0000 (11:34 +0900)
committerMikio Hara <mikioh.mikioh@gmail.com>
Mon, 28 Apr 2014 02:34:52 +0000 (11:34 +0900)
Update #7645

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/98790044

src/pkg/syscall/net_nacl.go

index aaa8b71119c00fe2fc3af0bfc7b5738b5f0fc226..b9488f48d1f64bb178e19b4075ffa1bb1fce1958 100644 (file)
@@ -808,11 +808,26 @@ func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn, recvflags int, from Soc
 }
 
 func Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) error {
+       _, err := SendmsgN(fd, p, oob, to, flags)
+       return err
+}
+
+func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) {
        f, err := fdToNetFile(fd)
        if err != nil {
-               return err
+               return 0, err
        }
-       return f.sendto(p, flags, to)
+       switch f.sotype {
+       case SOCK_STREAM:
+               n, err = f.write(p)
+       case SOCK_DGRAM:
+               n = len(p)
+               err = f.sendto(p, flags, to)
+       }
+       if err != nil {
+               return 0, err
+       }
+       return n, nil
 }
 
 func GetsockoptInt(fd, level, opt int) (value int, err error) {