1234567891011121314151617181920212223242526272829303132 |
- // +build !windows
- package sockets
- import (
- "net"
- "os"
- "syscall"
- )
- // NewUnixSocket creates a unix socket with the specified path and group.
- func NewUnixSocket(path string, gid int) (net.Listener, error) {
- if err := syscall.Unlink(path); err != nil && !os.IsNotExist(err) {
- return nil, err
- }
- mask := syscall.Umask(0777)
- defer syscall.Umask(mask)
- l, err := net.Listen("unix", path)
- if err != nil {
- return nil, err
- }
- if err := os.Chown(path, 0, gid); err != nil {
- l.Close()
- return nil, err
- }
- if err := os.Chmod(path, 0660); err != nil {
- l.Close()
- return nil, err
- }
- return l, nil
- }
|