From 7d05640b246dcd193dc0e70742b4511f638be3a6 Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Thu, 18 Aug 2016 12:43:59 +0700 Subject: [PATCH] change AckHandler interfaces to allow forcing a StopWaitingFrame ref #259 --- ackhandler/interfaces.go | 2 +- ackhandler/sent_packet_handler.go | 4 ++-- ackhandler/sent_packet_handler_test.go | 4 ++-- ackhandlerlegacy/interfaces.go | 2 +- ackhandlerlegacy/sent_packet_handler.go | 2 +- session.go | 2 +- session_test.go | 2 +- 7 files changed, 9 insertions(+), 9 deletions(-) diff --git a/ackhandler/interfaces.go b/ackhandler/interfaces.go index 3dc2631b..d46d4f10 100644 --- a/ackhandler/interfaces.go +++ b/ackhandler/interfaces.go @@ -13,7 +13,7 @@ type SentPacketHandler interface { SentPacket(packet *ackhandlerlegacy.Packet) error ReceivedAck(ackFrame *frames.AckFrame, withPacketNumber protocol.PacketNumber) error - GetStopWaitingFrame() *frames.StopWaitingFrame + GetStopWaitingFrame(force bool) *frames.StopWaitingFrame MaybeQueueRTOs() DequeuePacketForRetransmission() (packet *ackhandlerlegacy.Packet) diff --git a/ackhandler/sent_packet_handler.go b/ackhandler/sent_packet_handler.go index d188691d..6e04b645 100644 --- a/ackhandler/sent_packet_handler.go +++ b/ackhandler/sent_packet_handler.go @@ -265,8 +265,8 @@ func (h *sentPacketHandler) GetLeastUnacked() protocol.PacketNumber { return h.largestInOrderAcked() + 1 } -func (h *sentPacketHandler) GetStopWaitingFrame() *frames.StopWaitingFrame { - return h.stopWaitingManager.GetStopWaitingFrame(false) +func (h *sentPacketHandler) GetStopWaitingFrame(force bool) *frames.StopWaitingFrame { + return h.stopWaitingManager.GetStopWaitingFrame(force) } func (h *sentPacketHandler) CongestionAllowsSending() bool { diff --git a/ackhandler/sent_packet_handler_test.go b/ackhandler/sent_packet_handler_test.go index 984f34fb..92860842 100644 --- a/ackhandler/sent_packet_handler_test.go +++ b/ackhandler/sent_packet_handler_test.go @@ -614,12 +614,12 @@ var _ = Describe("SentPacketHandler", func() { ack := frames.AckFrame{LargestAcked: 5, LowestAcked: 5} err := handler.ReceivedAck(&ack, 1) Expect(err).ToNot(HaveOccurred()) - Expect(handler.GetStopWaitingFrame()).To(Equal(&frames.StopWaitingFrame{LeastUnacked: 6})) + Expect(handler.GetStopWaitingFrame(false)).To(Equal(&frames.StopWaitingFrame{LeastUnacked: 6})) }) It("gets a StopWaitingFrame after queueing a retransmission", func() { handler.queuePacketForRetransmission(getPacketElement(5)) - Expect(handler.GetStopWaitingFrame()).To(Equal(&frames.StopWaitingFrame{LeastUnacked: 6})) + Expect(handler.GetStopWaitingFrame(false)).To(Equal(&frames.StopWaitingFrame{LeastUnacked: 6})) }) }) }) diff --git a/ackhandlerlegacy/interfaces.go b/ackhandlerlegacy/interfaces.go index ceb5d78c..4e7f9e82 100644 --- a/ackhandlerlegacy/interfaces.go +++ b/ackhandlerlegacy/interfaces.go @@ -12,7 +12,7 @@ type SentPacketHandler interface { SentPacket(packet *Packet) error ReceivedAck(ackFrame *frames.AckFrame, withPacketNumber protocol.PacketNumber) error - GetStopWaitingFrame() *frames.StopWaitingFrame + GetStopWaitingFrame(force bool) *frames.StopWaitingFrame MaybeQueueRTOs() DequeuePacketForRetransmission() (packet *Packet) diff --git a/ackhandlerlegacy/sent_packet_handler.go b/ackhandlerlegacy/sent_packet_handler.go index 33012fbe..c2e59719 100644 --- a/ackhandlerlegacy/sent_packet_handler.go +++ b/ackhandlerlegacy/sent_packet_handler.go @@ -304,7 +304,7 @@ func (h *sentPacketHandler) GetLeastUnacked() protocol.PacketNumber { return h.highestInOrderAckedPacketNumber + 1 } -func (h *sentPacketHandler) GetStopWaitingFrame() *frames.StopWaitingFrame { +func (h *sentPacketHandler) GetStopWaitingFrame(force bool) *frames.StopWaitingFrame { panic("Legacy AckHandler should use StopWaitingManager") } diff --git a/session.go b/session.go index fd29b37a..2e1b6a3f 100644 --- a/session.go +++ b/session.go @@ -494,7 +494,7 @@ func (s *Session) sendPacket() error { stopWaitingFrame = s.stopWaitingManager.GetStopWaitingFrame() } else { if ack != nil || hasRetransmission { - stopWaitingFrame = s.sentPacketHandler.GetStopWaitingFrame() + stopWaitingFrame = s.sentPacketHandler.GetStopWaitingFrame(false) } } packet, err := s.packer.PackPacket(stopWaitingFrame, controlFrames, s.sentPacketHandler.GetLeastUnacked(), maySendOnlyAck) diff --git a/session_test.go b/session_test.go index 6bce84f3..902aa8cc 100644 --- a/session_test.go +++ b/session_test.go @@ -59,7 +59,7 @@ func (h *mockSentPacketHandler) ReceivedAck(ackFrame *frames.AckFrame, withPacke } func (h *mockSentPacketHandler) BytesInFlight() protocol.ByteCount { return 0 } func (h *mockSentPacketHandler) GetLeastUnacked() protocol.PacketNumber { return 1 } -func (h *mockSentPacketHandler) GetStopWaitingFrame() *frames.StopWaitingFrame { +func (h *mockSentPacketHandler) GetStopWaitingFrame(force bool) *frames.StopWaitingFrame { h.requestedStopWaiting = true return nil }