(ctx context.Context)
| 53 | } |
| 54 | |
| 55 | func (r *PacketRouter) nextPacket(ctx context.Context) (packet.RawPacket, ICMPResponder, error) { |
| 56 | pk, err := r.muxer.ReceivePacket(ctx) |
| 57 | if err != nil { |
| 58 | return packet.RawPacket{}, nil, err |
| 59 | } |
| 60 | responder := newPacketResponder(r.muxer, r.connIndex, packet.NewEncoder()) |
| 61 | |
| 62 | switch pk.Type() { |
| 63 | case quicpogs.DatagramTypeIP: |
| 64 | return packet.RawPacket{Data: pk.Payload()}, responder, nil |
| 65 | case quicpogs.DatagramTypeIPWithTrace: |
| 66 | var identity tracing.Identity |
| 67 | if err := identity.UnmarshalBinary(pk.Metadata()); err != nil { |
| 68 | r.logger.Err(err).Bytes("tracingIdentity", pk.Metadata()).Msg("Failed to unmarshal tracing identity") |
| 69 | } else { |
| 70 | tracedCtx := tracing.NewTracedContext(ctx, identity.String(), r.logger) |
| 71 | responder.AddTraceContext(tracedCtx, pk.Metadata()) |
| 72 | } |
| 73 | return packet.RawPacket{Data: pk.Payload()}, responder, nil |
| 74 | default: |
| 75 | return packet.RawPacket{}, nil, fmt.Errorf("unexpected datagram type %d", pk.Type()) |
| 76 | } |
| 77 | } |
| 78 | |
| 79 | func (r *PacketRouter) handlePacket(ctx context.Context, rawPacket packet.RawPacket, responder ICMPResponder) { |
| 80 | // ICMP Proxy feature is disabled, drop packets |
no test coverage detected