Improve error messsages
This commit is contained in:
parent
d983f84093
commit
bbd21d78cf
25
anyhttp.go
25
anyhttp.go
@ -115,16 +115,16 @@ func (s *SysdConfig) GetListener() (net.Listener, error) {
|
||||
if s.CheckPID {
|
||||
pid, err := strconv.Atoi(os.Getenv("LISTEN_PID"))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, fmt.Errorf("invalid LISTEN_PID, err: %w", err)
|
||||
}
|
||||
if pid != os.Getpid() {
|
||||
return nil, fmt.Errorf("fd not for you")
|
||||
return nil, fmt.Errorf("unexpected PID, current:%v, LISTEN_PID: %v", os.Getpid(), pid)
|
||||
}
|
||||
}
|
||||
|
||||
numFds, err := strconv.Atoi(os.Getenv("LISTEN_FDS"))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, fmt.Errorf("invalid LISTEN_FDS, err: %w", err)
|
||||
}
|
||||
|
||||
fdNames := strings.Split(os.Getenv("LISTEN_FDNAMES"), ":")
|
||||
@ -132,7 +132,7 @@ func (s *SysdConfig) GetListener() (net.Listener, error) {
|
||||
if s.FDIndex != nil {
|
||||
idx := *s.FDIndex
|
||||
if idx < 0 || idx >= numFds {
|
||||
return nil, fmt.Errorf("invalid fd")
|
||||
return nil, fmt.Errorf("invalid fd index, expected between 0 and %v, got: %v", numFds, idx)
|
||||
}
|
||||
fd := StartFD + idx
|
||||
if idx < len(fdNames) {
|
||||
@ -148,10 +148,17 @@ func (s *SysdConfig) GetListener() (net.Listener, error) {
|
||||
return makeFdListener(fd, name)
|
||||
}
|
||||
}
|
||||
return nil, fmt.Errorf("fdName not found: %q", *s.FDName)
|
||||
return nil, fmt.Errorf("fdName not found: %q, LISTEN_FDNAMES:%q", *s.FDName, os.Getenv("LISTEN_FDNAMES"))
|
||||
}
|
||||
|
||||
return nil, fmt.Errorf("neither FDIndex nor FDName set")
|
||||
return nil, errors.New("neither FDIndex nor FDName set")
|
||||
}
|
||||
|
||||
// UnknownAddress Error is returned when address does not match any known syntax
|
||||
type UnknownAddress string
|
||||
|
||||
func (u UnknownAddress) Error() string {
|
||||
return fmt.Sprintf("unknown address: %q", string(u))
|
||||
}
|
||||
|
||||
// GetListener gets a unix or systemd socket listener
|
||||
@ -164,7 +171,7 @@ func GetListener(addr string) (net.Listener, error) {
|
||||
if strings.HasPrefix(addr, "sysd/fdidx/") {
|
||||
idx, err := strconv.Atoi(strings.TrimPrefix(addr, "sysd/fdidx/"))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, fmt.Errorf("invalid fdidx, addr:%q err: %w", addr, err)
|
||||
}
|
||||
sysdc := NewSysDConfigWithFDIdx(idx)
|
||||
return sysdc.GetListener()
|
||||
@ -175,7 +182,7 @@ func GetListener(addr string) (net.Listener, error) {
|
||||
return sysdc.GetListener()
|
||||
}
|
||||
|
||||
return nil, nil
|
||||
return nil, UnknownAddress(addr)
|
||||
}
|
||||
|
||||
// ListenAndServe is the drop-in replacement for `http.ListenAndServe`.
|
||||
@ -183,7 +190,7 @@ func GetListener(addr string) (net.Listener, error) {
|
||||
func ListenAndServe(addr string, h http.Handler) error {
|
||||
|
||||
listener, err := GetListener(addr)
|
||||
if err != nil {
|
||||
if _, ok := err.(UnknownAddress); err != nil && !ok {
|
||||
return err
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user