~ubuntu-branches/ubuntu/vivid/golang/vivid

« back to all changes in this revision

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

  • Committer: Package Import Robot
  • Author(s): James Page
  • Date: 2013-08-20 14:06:23 UTC
  • mfrom: (14.1.23 saucy-proposed)
  • Revision ID: package-import@ubuntu.com-20130820140623-b414jfxi3m0qkmrq
Tags: 2:1.1.2-2ubuntu1
* Merge from Debian unstable (LP: #1211749, #1202027). Remaining changes:
  - 016-armhf-elf-header.patch: Use correct ELF header for armhf binaries.
  - d/control,control.cross: Update Breaks/Replaces for Ubuntu
    versions to ensure smooth upgrades, regenerate control file.

Show diffs side-by-side

added added

removed removed

Lines of Context:
4
4
 
5
5
// +build darwin freebsd netbsd openbsd
6
6
 
7
 
// Sockets for BSD variants
8
 
 
9
7
package net
10
8
 
11
9
import (
29
27
        if n == 0 || err != nil {
30
28
                return syscall.SOMAXCONN
31
29
        }
 
30
        // FreeBSD stores the backlog in a uint16, as does Linux.
 
31
        // Assume the other BSDs do too. Truncate number to avoid wrapping.
 
32
        // See issue 5030.
 
33
        if n > 1<<16-1 {
 
34
                n = 1<<16 - 1
 
35
        }
32
36
        return int(n)
33
37
}
34
 
 
35
 
func listenerSockaddr(s, f int, la syscall.Sockaddr, toAddr func(syscall.Sockaddr) Addr) (syscall.Sockaddr, error) {
36
 
        a := toAddr(la)
37
 
        if a == nil {
38
 
                return la, nil
39
 
        }
40
 
        switch v := a.(type) {
41
 
        case *TCPAddr, *UnixAddr:
42
 
                err := setDefaultListenerSockopts(s)
43
 
                if err != nil {
44
 
                        return nil, err
45
 
                }
46
 
        case *UDPAddr:
47
 
                if v.IP.IsMulticast() {
48
 
                        err := setDefaultMulticastSockopts(s)
49
 
                        if err != nil {
50
 
                                return nil, err
51
 
                        }
52
 
                        switch f {
53
 
                        case syscall.AF_INET:
54
 
                                v.IP = IPv4zero
55
 
                        case syscall.AF_INET6:
56
 
                                v.IP = IPv6unspecified
57
 
                        }
58
 
                        return v.sockaddr(f)
59
 
                }
60
 
        }
61
 
        return la, nil
62
 
}