Merge pull request #5947 from glebfm/fix-socket-race-condition
Fix race condition during socket creation
This commit is contained in:
commit
8ac516094e
1 changed files with 12 additions and 3 deletions
|
@ -1211,11 +1211,20 @@ func ListenAndServe(proto, addr string, job *engine.Job) error {
|
|||
}
|
||||
}
|
||||
|
||||
var oldmask int
|
||||
if proto == "unix" {
|
||||
oldmask = syscall.Umask(0777)
|
||||
}
|
||||
|
||||
if job.GetenvBool("BufferRequests") {
|
||||
l, err = listenbuffer.NewListenBuffer(proto, addr, activationLock)
|
||||
} else {
|
||||
l, err = net.Listen(proto, addr)
|
||||
}
|
||||
|
||||
if proto == "unix" {
|
||||
syscall.Umask(oldmask)
|
||||
}
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -1253,9 +1262,6 @@ func ListenAndServe(proto, addr string, job *engine.Job) error {
|
|||
log.Println("/!\\ DON'T BIND ON ANOTHER IP ADDRESS THAN 127.0.0.1 IF YOU DON'T KNOW WHAT YOU'RE DOING /!\\")
|
||||
}
|
||||
case "unix":
|
||||
if err := os.Chmod(addr, 0660); err != nil {
|
||||
return err
|
||||
}
|
||||
socketGroup := job.Getenv("SocketGroup")
|
||||
if socketGroup != "" {
|
||||
if err := changeGroup(addr, socketGroup); err != nil {
|
||||
|
@ -1267,6 +1273,9 @@ func ListenAndServe(proto, addr string, job *engine.Job) error {
|
|||
}
|
||||
}
|
||||
}
|
||||
if err := os.Chmod(addr, 0660); err != nil {
|
||||
return err
|
||||
}
|
||||
default:
|
||||
return fmt.Errorf("Invalid protocol format.")
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue