mirror of
https://github.com/cwinfo/yggdrasil-go.git
synced 2024-11-23 00:51:35 +00:00
correctly update buffer sizs when buffers overflow, and returned freed packets to the byte store
This commit is contained in:
parent
ad5dc9ea87
commit
ba4047b51a
@ -631,8 +631,12 @@ func (b *switch_buffers) cleanup(t *switchTable) {
|
|||||||
packet, buf.packets = buf.packets[0], buf.packets[1:]
|
packet, buf.packets = buf.packets[0], buf.packets[1:]
|
||||||
buf.size -= uint64(len(packet.bytes))
|
buf.size -= uint64(len(packet.bytes))
|
||||||
b.size -= uint64(len(packet.bytes))
|
b.size -= uint64(len(packet.bytes))
|
||||||
|
util_putBytes(packet.bytes)
|
||||||
if len(buf.packets) == 0 {
|
if len(buf.packets) == 0 {
|
||||||
delete(b.bufs, streamID)
|
delete(b.bufs, streamID)
|
||||||
|
} else {
|
||||||
|
// Need to update the map, since buf was retrieved by value
|
||||||
|
b.bufs[streamID] = buf
|
||||||
}
|
}
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
@ -672,6 +676,7 @@ func (t *switchTable) handleIdle(port switchPort, bufs *switch_buffers) bool {
|
|||||||
if len(buf.packets) == 0 {
|
if len(buf.packets) == 0 {
|
||||||
delete(bufs.bufs, best)
|
delete(bufs.bufs, best)
|
||||||
} else {
|
} else {
|
||||||
|
// Need to update the map, since buf was retrieved by value
|
||||||
bufs.bufs[best] = buf
|
bufs.bufs[best] = buf
|
||||||
}
|
}
|
||||||
to.sendPacket(packet.bytes)
|
to.sendPacket(packet.bytes)
|
||||||
|
Loading…
Reference in New Issue
Block a user