KeepAlive error handling

This commit is contained in:
Tnze
2021-12-23 01:26:55 +08:00
parent 260fc64701
commit 0fc4453bf6
2 changed files with 13 additions and 2 deletions

View File

@ -3,6 +3,7 @@ package server
import (
"container/list"
"context"
"errors"
"time"
"github.com/Tnze/go-mc/data/packetid"
@ -121,10 +122,14 @@ func (k *KeepAlive) pingPlayer(now time.Time) {
if elem := k.pingList.Front(); elem != nil {
player := elem.Value.(keepAliveItem).player
// Send Clientbound KeepAlive packet.
player.WritePacket(Packet757(pk.Marshal(
err := player.WritePacket(Packet757(pk.Marshal(
packetid.ClientboundKeepAlive,
pk.Long(k.keepAliveID),
)))
if err != nil {
player.PutErr(err)
return
}
k.keepAliveID++
// Clientbound KeepAlive packet is sent, move the player to waiting list.
k.pingList.Remove(elem)
@ -148,7 +153,8 @@ func (k *KeepAlive) tickPlayer(p *Player) {
}
if elem == nil {
panic("keepalive: fail to tick player: " + p.UUID.String() + " not found")
p.PutErr(errors.New("keepalive: fail to tick player: " + p.UUID.String() + " not found"))
return
}
if elem.Prev() == nil {