Reset formspec style on redirect

master
HimbeerserverDE 2021-02-13 18:33:02 +01:00
parent 89f179fa5b
commit 92fee72626
1 changed files with 18 additions and 10 deletions

View File

@ -70,8 +70,16 @@ func (p *Peer) Redirect(newsrv string) error {
return err
}
// Reset formspec style
data := []byte{
0x00, ToClientFormspecPrepend,
0x00, 0x00,
}
ack, err := p.Send(rudp.Pkt{Data: data})
// Remove active objects
data := make([]byte, 6+len(p.aoIDs)*2)
data = make([]byte, 6+len(p.aoIDs)*2)
data[0] = uint8(0x00)
data[1] = uint8(ToClientActiveObjectRemoveAdd)
binary.BigEndian.PutUint16(data[2:4], uint16(len(p.aoIDs)))
@ -83,10 +91,18 @@ func (p *Peer) Redirect(newsrv string) error {
}
binary.BigEndian.PutUint16(data[i:2+i], uint16(0))
ack, err = p.Send(rudp.Pkt{Data: data})
if err != nil {
return err
}
<-ack
p.aoIDs = make(map[uint16]bool)
// Update detached inventories
if len(detachedinvs[newsrv]) > 0 {
for i := range detachedinvs[newsrv] {
data := make([]byte, 2+len(detachedinvs[newsrv][i]))
data = make([]byte, 2+len(detachedinvs[newsrv][i]))
data[0] = uint8(0x00)
data[1] = uint8(ToClientDetachedInventory)
copy(data[2:], detachedinvs[newsrv][i])
@ -99,14 +115,6 @@ func (p *Peer) Redirect(newsrv string) error {
}
}
ack, err := p.Send(rudp.Pkt{Data: data})
if err != nil {
return err
}
<-ack
p.aoIDs = make(map[uint16]bool)
p.Server().stopForwarding()
fin := make(chan *Peer) // close-only