forked from quic-go/quic-go
re-add trivial ack handling to session, will be removed later
This commit is contained in:
28
session.go
28
session.go
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user