Fast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS
Mirrored from https://github.com/Slazee/caddy.git
Synced Nov 13, 00:30 UTC
core: Skip `chmod` for abstract unix sockets (#5596)
because those aren't real paths on the filesystem and thus can't be `chmod`ed
Emily committed
Jun 25, 2023 at 02:25 UTC
119e8794bcbda80ca337c1bb6164718e1490cc4f
1 file changed
+11
-4
listeners.go
+11
-4
@@ -151,6 +151,7 @@ func (na NetworkAddress) listen(ctx context.Context, portOffset uint, config net
151
var err error
152
var address string
153
var unixFileMode fs.FileMode
154
+ var isAbtractUnixSocket bool
155
156
// split unix socket addr early so lnKey
157
// is independent of permissions bits
@@ -160,6 +161,7 @@ func (na NetworkAddress) listen(ctx context.Context, portOffset uint, config net
161
if err != nil {
162
return nil, err
163
}
164
+ isAbtractUnixSocket = strings.HasPrefix(address, "@")
165
} else {
166
address = na.JoinHostPort(portOffset)
167
}
@@ -167,8 +169,11 @@ func (na NetworkAddress) listen(ctx context.Context, portOffset uint, config net
169
// if this is a unix socket, see if we already have it open,
170
// force socket permissions on it and return early
171
if socket, err := reuseUnixSocket(na.Network, address); socket != nil || err != nil {
170
- if err := os.Chmod(address, unixFileMode); err != nil {
171
- return nil, fmt.Errorf("unable to set permissions (%s) on %s: %v", unixFileMode, address, err)
172
+ if !isAbtractUnixSocket {
173
+ if err := os.Chmod(address, unixFileMode); err != nil {
174
+ return nil, fmt.Errorf("unable to set permissions (%s) on %s: %v", unixFileMode, address, err)
175
+ }
176
+
177
}
178
return socket, err
179
}
@@ -211,8 +216,10 @@ func (na NetworkAddress) listen(ctx context.Context, portOffset uint, config net
216
}
217
218
if IsUnixNetwork(na.Network) {
214
- if err := os.Chmod(address, unixFileMode); err != nil {
215
- return nil, fmt.Errorf("unable to set permissions (%s) on %s: %v", unixFileMode, address, err)
219
+ if !isAbtractUnixSocket {
220
+ if err := os.Chmod(address, unixFileMode); err != nil {
221
+ return nil, fmt.Errorf("unable to set permissions (%s) on %s: %v", unixFileMode, address, err)
222
+ }
223
}
224
}
225