Skip to content

Commit 7e1b74c

Browse files
committed
enhance: handle listener closed errors gracefully on shutdown
1 parent 3a3b76c commit 7e1b74c

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

risefront.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,23 @@ func (cfg Config) runParent(ctx context.Context, socket string) error {
233233
if ctx.Err() != nil {
234234
return ctx.Err()
235235
}
236+
237+
// Check if the error is due to listener being closed (normal shutdown)
238+
var opErr *net.OpError
239+
if errors.As(err, &opErr) {
240+
if opErr.Op == "accept" && strings.Contains(opErr.Err.Error(), "use of closed network connection") {
241+
// This is expected when shutting down, don't log as error
242+
cfg.LogHandler(DebugLevel, "parent.sock.Accept", "child listener closed during shutdown")
243+
return nil
244+
}
245+
}
246+
247+
// Check for other network closed errors
248+
if errors.Is(err, net.ErrClosed) {
249+
cfg.LogHandler(DebugLevel, "parent.sock.Accept", "child listener closed")
250+
return nil
251+
}
252+
236253
cfg.LogHandler(ErrorLevel, "parent.sock.Accept", err)
237254
var ne net.Error
238255
if errors.As(err, &ne) && ne.Timeout() {
@@ -260,6 +277,20 @@ func (cfg Config) runExternalListener(ln net.Listener, ch chan net.Conn) {
260277
rw, err := ln.Accept()
261278

262279
if err != nil {
280+
// Check if the error is due to listener being closed (normal shutdown)
281+
var opErr *net.OpError
282+
if errors.As(err, &opErr) {
283+
if opErr.Op == "accept" && strings.Contains(opErr.Err.Error(), "use of closed network connection") {
284+
return
285+
}
286+
}
287+
288+
// Check for other network closed errors
289+
if errors.Is(err, net.ErrClosed) {
290+
cfg.LogHandler(DebugLevel, "parent."+ln.Addr().String()+".Accept", "listener closed")
291+
return
292+
}
293+
263294
cfg.LogHandler(WarnLevel, "parent."+ln.Addr().String()+".Accept", err)
264295
var ne net.Error
265296
if errors.As(err, &ne) && ne.Timeout() {

0 commit comments

Comments
 (0)