mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-08-05 09:55:20 +02:00
fix: Listening on abstract domain sockets (#7020)
When passed a socket name that starts with @, go will listen on an abstract unix domain socket. Forgejo breaks this by assuming the socket name is a file path and normalizing it to an absolute path. This small commit prevents treating the socket name as a filesystem path if it starts with @. Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/7020 Reviewed-by: Gusted <gusted@noreply.codeberg.org> Co-authored-by: Mewp <codeberg.org@mewp.pl> Co-committed-by: Mewp <codeberg.org@mewp.pl>
This commit is contained in:
parent
584c504e25
commit
377052c90c
4 changed files with 35 additions and 4 deletions
|
@ -265,7 +265,7 @@ func loadServerFrom(rootCfg ConfigProvider) {
|
|||
}
|
||||
|
||||
UnixSocketPermission = uint32(UnixSocketPermissionParsed)
|
||||
if !filepath.IsAbs(HTTPAddr) {
|
||||
if HTTPAddr[0] != '@' && !filepath.IsAbs(HTTPAddr) {
|
||||
HTTPAddr = filepath.Join(AppWorkPath, HTTPAddr)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -73,3 +73,16 @@ MAX_USER_REDIRECTS = 8`
|
|||
assert.EqualValues(t, 3, Service.UsernameCooldownPeriod)
|
||||
assert.EqualValues(t, 8, Service.MaxUserRedirects)
|
||||
}
|
||||
|
||||
func TestUnixSocketAbstractNamespace(t *testing.T) {
|
||||
iniStr := `
|
||||
[server]
|
||||
PROTOCOL=http+unix
|
||||
HTTP_ADDR=@forgejo
|
||||
`
|
||||
cfg, err := NewConfigProviderFromData(iniStr)
|
||||
require.NoError(t, err)
|
||||
loadServerFrom(cfg)
|
||||
|
||||
assert.EqualValues(t, "@forgejo", HTTPAddr)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue