diff options
| author | Mikio Hara <mikioh.mikioh@gmail.com> | 2015-04-21 22:53:47 +0900 |
|---|---|---|
| committer | Mikio Hara <mikioh.mikioh@gmail.com> | 2015-04-29 22:37:30 +0000 |
| commit | afd2d2b6df3ebfe99faf347030f15adfdf422fa0 (patch) | |
| tree | 11d358f251d08cdbd489a6515cffa374167564e2 /src/net/dial.go | |
| parent | 35748919429c23b9ea91099b8d3b481dff5bbae5 (diff) | |
| download | go-afd2d2b6df3ebfe99faf347030f15adfdf422fa0.tar.xz | |
net: add Source field to OpError
Not only by network, transport-layer intermediaries but by
virtualization stuff in a node, it is hard to identify the root cause of
weird faults without information of packet flows after disaster
happened.
This change adds Source field to OpError to be able to represent a
5-tuple of internet transport protocols for helping dealing with
complicated systems.
Also clarifies the usage of Source and Addr fields.
Updates #4856.
Change-Id: I96a523fe391ed14406bfb21604c461d4aac2fa19
Reviewed-on: https://go-review.googlesource.com/9231
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Diffstat (limited to 'src/net/dial.go')
| -rw-r--r-- | src/net/dial.go | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/net/dial.go b/src/net/dial.go index feca759f82..4f0c6cb0ea 100644 --- a/src/net/dial.go +++ b/src/net/dial.go @@ -161,7 +161,7 @@ func DialTimeout(network, address string, timeout time.Duration) (Conn, error) { func (d *Dialer) Dial(network, address string) (Conn, error) { addrs, err := resolveAddrList("dial", network, address, d.deadline()) if err != nil { - return nil, &OpError{Op: "dial", Net: network, Addr: nil, Err: err} + return nil, &OpError{Op: "dial", Net: network, Source: nil, Addr: nil, Err: err} } var dialer func(deadline time.Time) (Conn, error) if d.DualStack && network == "tcp" { @@ -235,7 +235,7 @@ func dialMulti(net, addr string, la Addr, ras addrList, deadline time.Time) (Con // the destination address. func dialSingle(net, addr string, la, ra Addr, deadline time.Time) (c Conn, err error) { if la != nil && la.Network() != ra.Network() { - return nil, &OpError{Op: "dial", Net: net, Addr: ra, Err: errors.New("mismatched local address type " + la.Network())} + return nil, &OpError{Op: "dial", Net: net, Source: la, Addr: ra, Err: errors.New("mismatched local address type " + la.Network())} } switch ra := ra.(type) { case *TCPAddr: @@ -251,7 +251,7 @@ func dialSingle(net, addr string, la, ra Addr, deadline time.Time) (c Conn, err la, _ := la.(*UnixAddr) c, err = dialUnix(net, la, ra, deadline) default: - return nil, &OpError{Op: "dial", Net: net, Addr: ra, Err: &AddrError{Err: "unexpected address type", Addr: addr}} + return nil, &OpError{Op: "dial", Net: net, Source: la, Addr: ra, Err: &AddrError{Err: "unexpected address type", Addr: addr}} } if err != nil { return nil, err // c is non-nil interface containing nil pointer @@ -266,7 +266,7 @@ func dialSingle(net, addr string, la, ra Addr, deadline time.Time) (c Conn, err func Listen(net, laddr string) (Listener, error) { addrs, err := resolveAddrList("listen", net, laddr, noDeadline) if err != nil { - return nil, &OpError{Op: "listen", Net: net, Addr: nil, Err: err} + return nil, &OpError{Op: "listen", Net: net, Source: nil, Addr: nil, Err: err} } var l Listener switch la := addrs.first(isIPv4).(type) { @@ -275,7 +275,7 @@ func Listen(net, laddr string) (Listener, error) { case *UnixAddr: l, err = ListenUnix(net, la) default: - return nil, &OpError{Op: "listen", Net: net, Addr: la, Err: &AddrError{Err: "unexpected address type", Addr: laddr}} + return nil, &OpError{Op: "listen", Net: net, Source: nil, Addr: la, Err: &AddrError{Err: "unexpected address type", Addr: laddr}} } if err != nil { return nil, err // l is non-nil interface containing nil pointer @@ -290,7 +290,7 @@ func Listen(net, laddr string) (Listener, error) { func ListenPacket(net, laddr string) (PacketConn, error) { addrs, err := resolveAddrList("listen", net, laddr, noDeadline) if err != nil { - return nil, &OpError{Op: "listen", Net: net, Addr: nil, Err: err} + return nil, &OpError{Op: "listen", Net: net, Source: nil, Addr: nil, Err: err} } var l PacketConn switch la := addrs.first(isIPv4).(type) { @@ -301,7 +301,7 @@ func ListenPacket(net, laddr string) (PacketConn, error) { case *UnixAddr: l, err = ListenUnixgram(net, la) default: - return nil, &OpError{Op: "listen", Net: net, Addr: la, Err: &AddrError{Err: "unexpected address type", Addr: laddr}} + return nil, &OpError{Op: "listen", Net: net, Source: nil, Addr: la, Err: &AddrError{Err: "unexpected address type", Addr: laddr}} } if err != nil { return nil, err // l is non-nil interface containing nil pointer |
