~john-koepi/ubuntu/trusty/golang/default

« back to all changes in this revision

Viewing changes to src/pkg/net/dial.go

  • Committer: Bazaar Package Importer
  • Author(s): Ondřej Surý
  • Date: 2011-08-03 17:04:59 UTC
  • mfrom: (14.1.2 sid)
  • Revision ID: james.westby@ubuntu.com-20110803170459-wzd99m3567y80ila
Tags: 1:59-1
* Imported Upstream version 59
* Refresh patches to a new release
* Fix FTBFS on ARM (Closes: #634270)
* Update version.bash to work with Debian packaging and not hg
  repository

Show diffs side-by-side

added added

removed removed

Lines of Context:
6
6
 
7
7
import "os"
8
8
 
 
9
func resolveNetAddr(op, net, addr string) (a Addr, err os.Error) {
 
10
        if addr == "" {
 
11
                return nil, &OpError{op, net, nil, errMissingAddress}
 
12
        }
 
13
        switch net {
 
14
        case "tcp", "tcp4", "tcp6":
 
15
                a, err = ResolveTCPAddr(net, addr)
 
16
        case "udp", "udp4", "udp6":
 
17
                a, err = ResolveUDPAddr(net, addr)
 
18
        case "unix", "unixgram", "unixpacket":
 
19
                a, err = ResolveUnixAddr(net, addr)
 
20
        case "ip", "ip4", "ip6":
 
21
                a, err = ResolveIPAddr(net, addr)
 
22
        default:
 
23
                err = UnknownNetworkError(net)
 
24
        }
 
25
        if err != nil {
 
26
                return nil, &OpError{op, net + " " + addr, nil, err}
 
27
        }
 
28
        return
 
29
}
 
30
 
9
31
// Dial connects to the address addr on the network net.
10
32
//
11
33
// Known networks are "tcp", "tcp4" (IPv4-only), "tcp6" (IPv6-only),
23
45
//      Dial("tcp", "[de:ad:be:ef::ca:fe]:80")
24
46
//
25
47
func Dial(net, addr string) (c Conn, err os.Error) {
26
 
        raddr := addr
27
 
        if raddr == "" {
28
 
                return nil, &OpError{"dial", net, nil, errMissingAddress}
 
48
        addri, err := resolveNetAddr("dial", net, addr)
 
49
        if err != nil {
 
50
                return nil, err
29
51
        }
30
 
        switch net {
31
 
        case "tcp", "tcp4", "tcp6":
32
 
                var ra *TCPAddr
33
 
                if ra, err = ResolveTCPAddr(net, raddr); err != nil {
34
 
                        goto Error
35
 
                }
36
 
                c, err := DialTCP(net, nil, ra)
37
 
                if err != nil {
38
 
                        return nil, err
39
 
                }
40
 
                return c, nil
41
 
        case "udp", "udp4", "udp6":
42
 
                var ra *UDPAddr
43
 
                if ra, err = ResolveUDPAddr(net, raddr); err != nil {
44
 
                        goto Error
45
 
                }
46
 
                c, err := DialUDP(net, nil, ra)
47
 
                if err != nil {
48
 
                        return nil, err
49
 
                }
50
 
                return c, nil
51
 
        case "unix", "unixgram", "unixpacket":
52
 
                var ra *UnixAddr
53
 
                if ra, err = ResolveUnixAddr(net, raddr); err != nil {
54
 
                        goto Error
55
 
                }
 
52
        switch ra := addri.(type) {
 
53
        case *TCPAddr:
 
54
                c, err = DialTCP(net, nil, ra)
 
55
        case *UDPAddr:
 
56
                c, err = DialUDP(net, nil, ra)
 
57
        case *UnixAddr:
56
58
                c, err = DialUnix(net, nil, ra)
57
 
                if err != nil {
58
 
                        return nil, err
59
 
                }
60
 
                return c, nil
61
 
        case "ip", "ip4", "ip6":
62
 
                var ra *IPAddr
63
 
                if ra, err = ResolveIPAddr(net, raddr); err != nil {
64
 
                        goto Error
65
 
                }
66
 
                c, err := DialIP(net, nil, ra)
67
 
                if err != nil {
68
 
                        return nil, err
69
 
                }
70
 
                return c, nil
71
 
 
72
 
        }
73
 
        err = UnknownNetworkError(net)
74
 
Error:
75
 
        return nil, &OpError{"dial", net + " " + raddr, nil, err}
 
59
        case *IPAddr:
 
60
                c, err = DialIP(net, nil, ra)
 
61
        default:
 
62
                err = UnknownNetworkError(net)
 
63
        }
 
64
        if err != nil {
 
65
                return nil, &OpError{"dial", net + " " + addr, nil, err}
 
66
        }
 
67
        return
76
68
}
77
69
 
78
70
// Listen announces on the local network address laddr.