// Copyright 2021 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. //go:build aix || darwin || freebsd || solaris // +build aix darwin freebsd solaris package net import "syscall" const readMsgFlags = 0 func setReadMsgCloseOnExec(oob []byte) { scms, err := syscall.ParseSocketControlMessage(oob) if err != nil { return } for _, scm := range scms { if scm.Header.Level == syscall.SOL_SOCKET && scm.Header.Type == syscall.SCM_RIGHTS { fds, err := syscall.ParseUnixRights(&scm) if err != nil { continue } for _, fd := range fds { syscall.CloseOnExec(fd) } } } }