]> Cypherpunks repositories - gostls13.git/commitdiff
net: fix incoming connection's network name handling on unix networks
authorMikio Hara <mikioh.mikioh@gmail.com>
Wed, 29 Jan 2014 00:51:31 +0000 (09:51 +0900)
committerMikio Hara <mikioh.mikioh@gmail.com>
Wed, 29 Jan 2014 00:51:31 +0000 (09:51 +0900)
Fixes #7183.

LGTM=iant
R=golang-codereviews, gobot, iant
CC=golang-codereviews
https://golang.org/cl/57520043

src/pkg/net/conn_test.go
src/pkg/net/unixsock_posix.go

index 98bd69549935e3d78593703255ed3faeb729d784..7250dcb85ad766d9f8897d776041640bfe6bdb76 100644 (file)
@@ -53,7 +53,9 @@ func TestConnAndListener(t *testing.T) {
                                os.Remove(addr)
                        }
                }(ln, tt.net, addr)
-               ln.Addr()
+               if ln.Addr().Network() != tt.net {
+                       t.Fatalf("got %v; expected %v", ln.Addr().Network(), tt.net)
+               }
 
                done := make(chan int)
                go transponder(t, ln, done)
@@ -63,8 +65,9 @@ func TestConnAndListener(t *testing.T) {
                        t.Fatalf("Dial failed: %v", err)
                }
                defer c.Close()
-               c.LocalAddr()
-               c.RemoteAddr()
+               if c.LocalAddr().Network() != tt.net || c.LocalAddr().Network() != tt.net {
+                       t.Fatalf("got %v->%v; expected %v->%v", c.LocalAddr().Network(), c.RemoteAddr().Network(), tt.net, tt.net)
+               }
                c.SetDeadline(time.Now().Add(someTimeout))
                c.SetReadDeadline(time.Now().Add(someTimeout))
                c.SetWriteDeadline(time.Now().Add(someTimeout))
@@ -96,8 +99,11 @@ func transponder(t *testing.T, ln Listener, done chan<- int) {
                return
        }
        defer c.Close()
-       c.LocalAddr()
-       c.RemoteAddr()
+       network := ln.Addr().Network()
+       if c.LocalAddr().Network() != network || c.LocalAddr().Network() != network {
+               t.Errorf("got %v->%v; expected %v->%v", c.LocalAddr().Network(), c.RemoteAddr().Network(), network, network)
+               return
+       }
        c.SetDeadline(time.Now().Add(someTimeout))
        c.SetReadDeadline(time.Now().Add(someTimeout))
        c.SetWriteDeadline(time.Now().Add(someTimeout))
index b82f3cee0b57d21fa83b77b7c1928135b982300d..54d9d16c99e69702b534533a440ff4a3f6b96de8 100644 (file)
@@ -280,7 +280,11 @@ func (l *UnixListener) AcceptUnix() (*UnixConn, error) {
        if l == nil || l.fd == nil {
                return nil, syscall.EINVAL
        }
-       fd, err := l.fd.accept(sockaddrToUnix)
+       toAddr := sockaddrToUnix
+       if l.fd.sotype == syscall.SOCK_SEQPACKET {
+               toAddr = sockaddrToUnixpacket
+       }
+       fd, err := l.fd.accept(toAddr)
        if err != nil {
                return nil, err
        }