| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- package quic
- import (
- "fmt"
- "v2ray.com/core/external/github.com/lucas-clemente/quic-go/internal/protocol"
- "v2ray.com/core/external/github.com/lucas-clemente/quic-go/internal/utils"
- )
- type serverSession struct {
- quicSession
- config *Config
- logger utils.Logger
- }
- var _ packetHandler = &serverSession{}
- func newServerSession(sess quicSession, config *Config, logger utils.Logger) packetHandler {
- return &serverSession{
- quicSession: sess,
- config: config,
- logger: logger,
- }
- }
- func (s *serverSession) handlePacket(p *receivedPacket) {
- if err := s.handlePacketImpl(p); err != nil {
- s.logger.Debugf("error handling packet from %s: %s", p.remoteAddr, err)
- }
- }
- func (s *serverSession) handlePacketImpl(p *receivedPacket) error {
- hdr := p.hdr
- // Probably an old packet that was sent by the client before the version was negotiated.
- // It is safe to drop it.
- if hdr.IsLongHeader && hdr.Version != s.quicSession.GetVersion() {
- return nil
- }
- if hdr.IsLongHeader {
- switch hdr.Type {
- case protocol.PacketTypeInitial, protocol.PacketTypeHandshake:
- // nothing to do here. Packet will be passed to the session.
- default:
- // Note that this also drops 0-RTT packets.
- return fmt.Errorf("Received unsupported packet type: %s", hdr.Type)
- }
- }
- s.quicSession.handlePacket(p)
- return nil
- }
- func (s *serverSession) GetPerspective() protocol.Perspective {
- return protocol.PerspectiveServer
- }
|