From: Mikio Hara Date: Fri, 23 Aug 2013 04:13:43 +0000 (+0900) Subject: net: update doc on socket X-Git-Tag: go1.2rc2~453 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=6383896feeafde38c50aa04fc87afc7faf8225c6;p=gostls13.git net: update doc on socket Also makes variable names a bit cleaner. R=golang-dev, dave, r CC=golang-dev https://golang.org/cl/12808047 --- diff --git a/src/pkg/net/sock_posix.go b/src/pkg/net/sock_posix.go index 1b2bbde4a9..7abf79a771 100644 --- a/src/pkg/net/sock_posix.go +++ b/src/pkg/net/sock_posix.go @@ -37,39 +37,46 @@ type sockaddr interface { toAddr() sockaddr } -// Generic POSIX socket creation. -func socket(net string, f, t, p int, ipv6only bool, laddr, raddr sockaddr, deadline time.Time, toAddr func(syscall.Sockaddr) Addr) (fd *netFD, err error) { - s, err := sysSocket(f, t, p) +// socket returns a network file descriptor that is ready for +// asynchronous I/O using the network poller. +func socket(net string, family, sotype, proto int, ipv6only bool, laddr, raddr sockaddr, deadline time.Time, toAddr func(syscall.Sockaddr) Addr) (fd *netFD, err error) { + s, err := sysSocket(family, sotype, proto) if err != nil { return nil, err } - - if err = setDefaultSockopts(s, f, t, ipv6only); err != nil { + if err = setDefaultSockopts(s, family, sotype, ipv6only); err != nil { closesocket(s) return nil, err } - - if fd, err = newFD(s, f, t, net); err != nil { + if fd, err = newFD(s, family, sotype, net); err != nil { closesocket(s) return nil, err } - // This function makes a network file descriptor for stream - // and datagram dialers, stream and datagram listeners. + // This function makes a network file descriptor for the + // following applications: + // + // - An endpoint holder that opens a passive stream + // connenction, known as a stream listener + // + // - An endpoint holder that opens a destination-unspecific + // datagram connection, known as a datagram listener + // + // - An endpoint holder that opens an active stream or a + // destination-specific datagram connection, known as a + // dialer // - // For dialers, they will require either named or unnamed - // sockets for their flights. We can assume that it's just a - // request from a dialer that wants a named socket when both - // laddr and raddr are not nil. A dialer will also require a - // connection setup initiated socket when raddr is not nil. + // - An endpoint holder that opens the other connection, such + // as talking to the protocol stack inside the kernel // - // For listeners and some dialers on datagram networks, they - // will only require named sockets. So we can assume that - // it's just for a listener or a datagram dialer when laddr is - // not nil but raddr is nil. + // For stream and datagram listeners, they will only require + // named sockets, so we can assume that it's just a request + // from stream or datagram listeners when laddr is not nil but + // raddr is nil. Otherwise we assume it's just for dialers or + // the other connection holders. if laddr != nil && raddr == nil { - switch t { + switch sotype { case syscall.SOCK_STREAM, syscall.SOCK_SEQPACKET: if err := fd.listenStream(laddr, listenerBacklog, toAddr); err != nil { fd.Close()