diff options
author | Runxi Yu <me@runxiyu.org> | 2025-02-17 20:34:05 +0800 |
---|---|---|
committer | Runxi Yu <me@runxiyu.org> | 2025-02-17 20:34:05 +0800 |
commit | d166317d059f1c0bf91626315b51d4bda15935c0 (patch) | |
tree | 8322d8ecd7405db1bed3f22ca89aebeadd4f4c5d /git_hooks_handle.go | |
parent | README.md: Prominently note Lindenii's own instance (diff) | |
download | forge-d166317d059f1c0bf91626315b51d4bda15935c0.tar.gz forge-d166317d059f1c0bf91626315b51d4bda15935c0.tar.zst forge-d166317d059f1c0bf91626315b51d4bda15935c0.zip |
git_hooks_handle.go: Refactor for clarity
Diffstat (limited to 'git_hooks_handle.go')
-rw-r--r-- | git_hooks_handle.go | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/git_hooks_handle.go b/git_hooks_handle.go index 7e67a89..00b1c65 100644 --- a/git_hooks_handle.go +++ b/git_hooks_handle.go @@ -9,24 +9,16 @@ import ( ) var err_not_unixconn = errors.New("Not a unix connection") +var err_get_fd = errors.New("Unable to get file descriptor") +var err_get_ucred = errors.New("Failed getsockopt") func hooks_handle_connection(conn net.Conn) { defer conn.Close() - unix_conn := conn.(*net.UnixConn) - - fd, err := unix_conn.File() + ucred, err := get_ucred(conn) if err != nil { conn.Write([]byte{1}) - fmt.Fprintln(conn, "Unable to get file descriptor") - return - } - defer fd.Close() - - ucred, err := get_ucred(fd) - if err != nil { - conn.Write([]byte{1}) - fmt.Fprintln(conn, "Unable to get peer credentials") + fmt.Fprintln(conn, "Unable to get peer credentials:", err.Error()) return } @@ -52,10 +44,17 @@ func serve_git_hooks(listener net.Listener) error { } } -func get_ucred(fd *os.File) (*syscall.Ucred, error) { +func get_ucred(conn net.Conn) (*syscall.Ucred, error) { + unix_conn := conn.(*net.UnixConn) + fd, err := unix_conn.File() + if err != nil { + return nil, err_get_fd + } + defer fd.Close() + ucred, err := syscall.GetsockoptUcred(int(fd.Fd()), syscall.SOL_SOCKET, syscall.SO_PEERCRED) if err != nil { - return nil, fmt.Errorf("failed to get credentials: %v", err) + return nil, err_get_ucred } return ucred, nil } |