re-add trivial ack handling to session, will be removed later

This commit is contained in:
Lucas Clemente
2016-04-21 17:02:45 +02:00
parent 49701139cc
commit 1e83ef967e

View File

@@ -32,6 +32,9 @@ type Session struct {
unpacker *packetUnpacker unpacker *packetUnpacker
packer *packetPacker packer *packetPacker
batchMode bool batchMode bool
// TODO: Remove
EntropyReceived ackhandler.EntropyAccumulator
} }
// NewSession makes a new session // NewSession makes a new session
@@ -46,7 +49,7 @@ func NewSession(conn *net.UDPConn, v protocol.VersionNumber, connectionID protoc
cryptoSetup := handshake.NewCryptoSetup(connectionID, v, sCfg, cryptoStream) cryptoSetup := handshake.NewCryptoSetup(connectionID, v, sCfg, cryptoStream)
go cryptoSetup.HandleCryptoStream() go cryptoSetup.HandleCryptoStream()
session.packer = &packetPacker{aead: cryptoSetup} session.packer = &packetPacker{aead: cryptoSetup, connectionID: connectionID}
session.unpacker = &packetUnpacker{aead: cryptoSetup} session.unpacker = &packetUnpacker{aead: cryptoSetup}
return session return session
@@ -67,9 +70,13 @@ func (s *Session) HandlePacket(addr *net.UDPAddr, publicHeaderBinary []byte, pub
return err return err
} }
s.incomingAckHandler.ReceivedPacket(publicHeader.PacketNumber, packet.entropyBit) // s.incomingAckHandler.ReceivedPacket(publicHeader.PacketNumber, packet.entropyBit)
// s.SendFrame(s.incomingAckHandler.DequeueAckFrame())
s.SendFrame(s.incomingAckHandler.DequeueAckFrame()) s.EntropyReceived.Add(publicHeader.PacketNumber, packet.entropyBit)
s.SendFrame(&frames.AckFrame{
LargestObserved: publicHeader.PacketNumber,
Entropy: s.EntropyReceived.Get(),
})
for _, ff := range packet.frames { for _, ff := range packet.frames {
var err error var err error
@@ -77,7 +84,7 @@ func (s *Session) HandlePacket(addr *net.UDPAddr, publicHeaderBinary []byte, pub
case *frames.StreamFrame: case *frames.StreamFrame:
err = s.handleStreamFrame(frame) err = s.handleStreamFrame(frame)
case *frames.AckFrame: case *frames.AckFrame:
s.outgoingAckHandler.ReceivedAck(frame) // s.outgoingAckHandler.ReceivedAck(frame)
case *frames.ConnectionCloseFrame: case *frames.ConnectionCloseFrame:
fmt.Printf("%#v\n", frame) fmt.Printf("%#v\n", frame)
case *frames.StopWaitingFrame: case *frames.StopWaitingFrame:
@@ -143,11 +150,12 @@ func (s *Session) sendPackets() error {
if packet == nil { if packet == nil {
return nil return nil
} }
s.outgoingAckHandler.SentPacket(&ackhandler.Packet{ // s.outgoingAckHandler.SentPacket(&ackhandler.Packet{
PacketNumber: packet.number, // PacketNumber: packet.number,
Plaintext: packet.payload, // Plaintext: packet.payload,
EntropyBit: packet.entropyBit, // EntropyBit: packet.entropyBit,
}) // })
fmt.Printf("-> Sending packet %d (%d bytes)\n", packet.number, len(packet.raw))
_, err = s.Connection.WriteToUDP(packet.raw, s.CurrentRemoteAddr) _, err = s.Connection.WriteToUDP(packet.raw, s.CurrentRemoteAddr)
if err != nil { if err != nil {
return err return err