Changeset 689 in code


Ignore:
Timestamp:
Nov 15, 2021, 8:40:17 PM (4 years ago)
Author:
contact
Message:

Add panic handlers for user and downstream goroutines

This only brings down a single user or downstream on panic, instead
or bringing down the whole bouncer.

Closes: https://todo.sr.ht/~emersion/soju/139

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/server.go

    r680 r689  
    1010        "net"
    1111        "net/http"
     12        "runtime/debug"
    1213        "sync"
    1314        "sync/atomic"
     
    164165
    165166        go func() {
     167                defer func() {
     168                        if err := recover(); err != nil {
     169                                s.Logger.Printf("panic serving user %q: %v\n%v", user.Username, err, debug.Stack())
     170                        }
     171                }()
     172
    166173                u.run()
    167174
     
    179186
    180187func (s *Server) handle(ic ircConn) {
     188        defer func() {
     189                if err := recover(); err != nil {
     190                        s.Logger.Printf("panic serving downstream %q: %v\n%v", ic.RemoteAddr(), err, debug.Stack())
     191                }
     192        }()
     193
    181194        atomic.AddInt64(&s.connCount, 1)
    182195        id := atomic.AddUint64(&lastDownstreamID, 1)
Note: See TracChangeset for help on using the changeset viewer.