diff --git a/proxy/freedom/freedom.go b/proxy/freedom/freedom.go index 49d05d148..07b70b094 100644 --- a/proxy/freedom/freedom.go +++ b/proxy/freedom/freedom.go @@ -160,7 +160,13 @@ func (h *Handler) Process(ctx context.Context, link *transport.Link, dialer inte responseDone := func() error { defer timer.SetTimeout(plcy.Timeouts.UplinkOnly) - if err := buf.Copy(buf.NewReader(conn), output, buf.UpdateActivity(timer)); err != nil { + var reader buf.Reader + if destination.Network == net.Network_TCP { + reader = buf.NewReader(conn) + } else { + reader = &buf.PacketReader{Reader: conn} + } + if err := buf.Copy(reader, output, buf.UpdateActivity(timer)); err != nil { return newError("failed to process response").Base(err) }