Skip to content

Commit d05d1e8

Browse files
authored
suppress net message panics, return error instead (#210)
1 parent 512f819 commit d05d1e8

File tree

3 files changed

+13
-3
lines changed

3 files changed

+13
-3
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ require (
99
github.com/llgcode/ps v0.0.0-20150911083025-f1443b32eedb // indirect
1010
github.com/markus-wa/go-unassert v0.1.2
1111
github.com/markus-wa/gobitread v0.2.2
12-
github.com/markus-wa/godispatch v1.2.1
12+
github.com/markus-wa/godispatch v1.3.0
1313
github.com/markus-wa/quickhull-go/v2 v2.1.0
1414
github.com/stretchr/objx v0.1.1 // indirect
1515
github.com/stretchr/testify v1.5.1

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ github.com/markus-wa/godispatch v1.2.0 h1:aB6epOoTbrsH3oaTE21L8/c+xiYSKOrsSDzl6Y
3131
github.com/markus-wa/godispatch v1.2.0/go.mod h1:GNzV7xdnZ9+VBi0z+hma9oUQrJmtqRrqyAuGKTTTcKY=
3232
github.com/markus-wa/godispatch v1.2.1 h1:Bj6blK4xJ/72pDi0rprVYluOGW9CV55FUDFPApyw91Q=
3333
github.com/markus-wa/godispatch v1.2.1/go.mod h1:GNzV7xdnZ9+VBi0z+hma9oUQrJmtqRrqyAuGKTTTcKY=
34+
github.com/markus-wa/godispatch v1.3.0 h1:eHT5Xm8ZEwilj9b/Tu7gyMfmtSau+yC0qpM7NRR+CQk=
35+
github.com/markus-wa/godispatch v1.3.0/go.mod h1:GNzV7xdnZ9+VBi0z+hma9oUQrJmtqRrqyAuGKTTTcKY=
3436
github.com/markus-wa/quickhull-go/v2 v2.1.0 h1:DA2pzEzH0k5CEnlUsouRqNdD+jzNFb4DBhrX4Hpa5So=
3537
github.com/markus-wa/quickhull-go/v2 v2.1.0/go.mod h1:bOlBUpIzGSMMhHX0f9N8CQs0VZD4nnPeta0OocH7m4o=
3638
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=

pkg/demoinfocs/parser.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package demoinfocs
22

33
import (
4+
"errors"
5+
"fmt"
46
"io"
57
"sync"
68
"time"
@@ -47,10 +49,10 @@ type parser struct {
4749
stParser *st.SendTableParser
4850
additionalNetMessageCreators map[int]NetMessageCreator // Map of net-message-IDs to NetMessageCreators (for parsing custom net-messages)
4951
msgQueue chan interface{} // Queue of net-messages
50-
msgDispatcher dp.Dispatcher // Net-message dispatcher
52+
msgDispatcher *dp.Dispatcher // Net-message dispatcher
5153
gameEventHandler gameEventHandler
5254
userMessageHandler userMessageHandler
53-
eventDispatcher dp.Dispatcher
55+
eventDispatcher *dp.Dispatcher
5456
currentFrame int // Demo-frame, not ingame-tick
5557
tickInterval float32 // Duration between ticks in seconds
5658
header *common.DemoHeader // Pointer so we can check for nil
@@ -302,6 +304,12 @@ func NewParserWithConfig(demostream io.Reader, config ParserConfig) Parser {
302304
p.userMessageHandler = newUserMessageHandler(&p)
303305
p.demoInfoProvider = demoInfoProvider{parser: &p}
304306

307+
dispatcherCfg := dp.Config{
308+
PanicHandler: func(v interface{}) { p.setError(errors.New(fmt.Sprint(v))) },
309+
}
310+
p.msgDispatcher = dp.NewDispatcherWithConfig(dispatcherCfg)
311+
p.eventDispatcher = new(dp.Dispatcher)
312+
305313
// Attach proto msg handlers
306314
p.msgDispatcher.RegisterHandler(p.handlePacketEntities)
307315
p.msgDispatcher.RegisterHandler(p.handleGameEventList)

0 commit comments

Comments
 (0)