diff options
Diffstat (limited to 'process.go')
-rw-r--r-- | process.go | 16 |
1 files changed, 16 insertions, 0 deletions
@@ -12,6 +12,10 @@ import ( ) func (cc *ClientConn) process(pkt mt.Pkt) { + defer func() { + cltLeaveModChans(cc) + }() + srv := cc.server() forward := func(pkt mt.Pkt) { @@ -484,6 +488,18 @@ func (cc *ClientConn) process(pkt mt.Pkt) { if handleOnPlayerReceiveFields(cc, cmd) { return } + case *mt.ToSrvJoinModChan: + modChanSubscriberMu.Lock() + defer modChanSubscriberMu.Unlock() + + subs, _ := modChanSubscribers[cmd.Channel] + modChanSubscribers[cmd.Channel] = append(subs, cc) + case *mt.ToSrvLeaveModChan: + cltLeaveModChan(cc, cmd.Channel) + case *mt.ToSrvMsgModChan: + if handleCltModChanMsg(cc, cmd) { + return + } } forward(pkt) |