correctly update buffer sizs when buffers overflow, and returned freed packets to the byte store

This commit is contained in:
Arceliar 2018-07-06 17:27:04 -05:00
parent ad5dc9ea87
commit ba4047b51a

View File

@ -631,8 +631,12 @@ func (b *switch_buffers) cleanup(t *switchTable) {
packet, buf.packets = buf.packets[0], buf.packets[1:]
buf.size -= uint64(len(packet.bytes))
b.size -= uint64(len(packet.bytes))
util_putBytes(packet.bytes)
if len(buf.packets) == 0 {
delete(b.bufs, streamID)
} else {
// Need to update the map, since buf was retrieved by value
b.bufs[streamID] = buf
}
break
}
@ -672,6 +676,7 @@ func (t *switchTable) handleIdle(port switchPort, bufs *switch_buffers) bool {
if len(buf.packets) == 0 {
delete(bufs.bufs, best)
} else {
// Need to update the map, since buf was retrieved by value
bufs.bufs[best] = buf
}
to.sendPacket(packet.bytes)