diff --git a/handler/http/handler.go b/handler/http/handler.go index fa49bfe5..58a44c84 100644 --- a/handler/http/handler.go +++ b/handler/http/handler.go @@ -681,7 +681,7 @@ func (h *httpHandler) sniffingWebsocketFrame(ctx context.Context, rw, cc io.Read go func() { ro2 := &xrecorder.HandlerRecorderObject{} *ro2 = *ro - ro = ro2 + ro := ro2 ticker := &time.Ticker{} if d > 0 { @@ -700,13 +700,12 @@ func (h *httpHandler) sniffingWebsocketFrame(ctx context.Context, rw, cc io.Read err := h.copyWebsocketFrame(cc, rw, buf, "client", ro) select { case <-ticker.C: - if err != nil { - ro.Err = err.Error() - } - ro.Duration = time.Since(start) - ro.Time = time.Now() - if err := ro.Record(ctx, h.recorder.Recorder); err != nil { - log.Errorf("record: %v", err) + if err == nil { + ro.Duration = time.Since(start) + ro.Time = time.Now() + if err := ro.Record(ctx, h.recorder.Recorder); err != nil { + log.Errorf("record: %v", err) + } } default: } @@ -721,7 +720,7 @@ func (h *httpHandler) sniffingWebsocketFrame(ctx context.Context, rw, cc io.Read go func() { ro2 := &xrecorder.HandlerRecorderObject{} *ro2 = *ro - ro = ro2 + ro := ro2 ticker := &time.Ticker{} if d > 0 { @@ -740,13 +739,12 @@ func (h *httpHandler) sniffingWebsocketFrame(ctx context.Context, rw, cc io.Read err := h.copyWebsocketFrame(rw, cc, buf, "server", ro) select { case <-ticker.C: - if err != nil { - ro.Err = err.Error() - } - ro.Duration = time.Since(start) - ro.Time = time.Now() - if err := ro.Record(ctx, h.recorder.Recorder); err != nil { - log.Errorf("record: %v", err) + if err == nil { + ro.Duration = time.Since(start) + ro.Time = time.Now() + if err := ro.Record(ctx, h.recorder.Recorder); err != nil { + log.Errorf("record: %v", err) + } } default: } diff --git a/handler/tunnel/entrypoint.go b/handler/tunnel/entrypoint.go index 8ceb63c4..eebfc039 100644 --- a/handler/tunnel/entrypoint.go +++ b/handler/tunnel/entrypoint.go @@ -421,7 +421,7 @@ func (ep *entrypoint) sniffingWebsocketFrame(ctx context.Context, rw, cc io.Read go func() { ro2 := &xrecorder.HandlerRecorderObject{} *ro2 = *ro - ro = ro2 + ro := ro2 ticker := &time.Ticker{} if d > 0 { @@ -440,13 +440,12 @@ func (ep *entrypoint) sniffingWebsocketFrame(ctx context.Context, rw, cc io.Read err := ep.copyWebsocketFrame(cc, rw, buf, "client", ro) select { case <-ticker.C: - if err != nil { - ro.Err = err.Error() - } - ro.Duration = time.Since(start) - ro.Time = time.Now() - if err := ro.Record(ctx, ep.recorder.Recorder); err != nil { - log.Errorf("record: %v", err) + if err == nil { + ro.Duration = time.Since(start) + ro.Time = time.Now() + if err := ro.Record(ctx, ep.recorder.Recorder); err != nil { + log.Errorf("record: %v", err) + } } default: } @@ -461,7 +460,7 @@ func (ep *entrypoint) sniffingWebsocketFrame(ctx context.Context, rw, cc io.Read go func() { ro2 := &xrecorder.HandlerRecorderObject{} *ro2 = *ro - ro = ro2 + ro := ro2 ticker := &time.Ticker{} if d > 0 { @@ -480,13 +479,12 @@ func (ep *entrypoint) sniffingWebsocketFrame(ctx context.Context, rw, cc io.Read err := ep.copyWebsocketFrame(rw, cc, buf, "server", ro) select { case <-ticker.C: - if err != nil { - ro.Err = err.Error() - } - ro.Duration = time.Since(start) - ro.Time = time.Now() - if err := ro.Record(ctx, ep.recorder.Recorder); err != nil { - log.Errorf("record: %v", err) + if err == nil { + ro.Duration = time.Since(start) + ro.Time = time.Now() + if err := ro.Record(ctx, ep.recorder.Recorder); err != nil { + log.Errorf("record: %v", err) + } } default: } diff --git a/internal/util/forwarder/sniffer.go b/internal/util/forwarder/sniffer.go index 7a3ebb9e..c01a6110 100644 --- a/internal/util/forwarder/sniffer.go +++ b/internal/util/forwarder/sniffer.go @@ -565,7 +565,7 @@ func (h *Sniffer) sniffingWebsocketFrame(ctx context.Context, rw, cc io.ReadWrit go func() { ro2 := &xrecorder.HandlerRecorderObject{} *ro2 = *ro - ro = ro2 + ro := ro2 ticker := &time.Ticker{} if d > 0 { @@ -584,13 +584,12 @@ func (h *Sniffer) sniffingWebsocketFrame(ctx context.Context, rw, cc io.ReadWrit err := h.copyWebsocketFrame(cc, rw, buf, "client", ro) select { case <-ticker.C: - if err != nil { - ro.Err = err.Error() - } - ro.Duration = time.Since(start) - ro.Time = time.Now() - if err := ro.Record(ctx, h.Recorder); err != nil { - log.Errorf("record: %v", err) + if err == nil { + ro.Duration = time.Since(start) + ro.Time = time.Now() + if err := ro.Record(ctx, h.Recorder); err != nil { + log.Errorf("record: %v", err) + } } default: } @@ -605,7 +604,7 @@ func (h *Sniffer) sniffingWebsocketFrame(ctx context.Context, rw, cc io.ReadWrit go func() { ro2 := &xrecorder.HandlerRecorderObject{} *ro2 = *ro - ro = ro2 + ro := ro2 ticker := &time.Ticker{} if d > 0 { @@ -624,13 +623,12 @@ func (h *Sniffer) sniffingWebsocketFrame(ctx context.Context, rw, cc io.ReadWrit err := h.copyWebsocketFrame(rw, cc, buf, "server", ro) select { case <-ticker.C: - if err != nil { - ro.Err = err.Error() - } - ro.Duration = time.Since(start) - ro.Time = time.Now() - if err := ro.Record(ctx, h.Recorder); err != nil { - log.Errorf("record: %v", err) + if err == nil { + ro.Duration = time.Since(start) + ro.Time = time.Now() + if err := ro.Record(ctx, h.Recorder); err != nil { + log.Errorf("record: %v", err) + } } default: } diff --git a/internal/util/sniffing/sniffer.go b/internal/util/sniffing/sniffer.go index 7c0aab16..9dbb1370 100644 --- a/internal/util/sniffing/sniffer.go +++ b/internal/util/sniffing/sniffer.go @@ -428,7 +428,7 @@ func (h *Sniffer) sniffingWebsocketFrame(ctx context.Context, rw, cc io.ReadWrit go func() { ro2 := &xrecorder.HandlerRecorderObject{} *ro2 = *ro - ro = ro2 + ro := ro2 ticker := &time.Ticker{} if d > 0 { @@ -447,13 +447,12 @@ func (h *Sniffer) sniffingWebsocketFrame(ctx context.Context, rw, cc io.ReadWrit err := h.copyWebsocketFrame(cc, rw, buf, "client", ro) select { case <-ticker.C: - if err != nil { - ro.Err = err.Error() - } - ro.Duration = time.Since(start) - ro.Time = time.Now() - if err := ro.Record(ctx, h.Recorder); err != nil { - log.Errorf("record: %v", err) + if err == nil { + ro.Duration = time.Since(start) + ro.Time = time.Now() + if err := ro.Record(ctx, h.Recorder); err != nil { + log.Errorf("record: %v", err) + } } default: } @@ -468,7 +467,7 @@ func (h *Sniffer) sniffingWebsocketFrame(ctx context.Context, rw, cc io.ReadWrit go func() { ro2 := &xrecorder.HandlerRecorderObject{} *ro2 = *ro - ro = ro2 + ro := ro2 ticker := &time.Ticker{} if d > 0 { @@ -487,13 +486,12 @@ func (h *Sniffer) sniffingWebsocketFrame(ctx context.Context, rw, cc io.ReadWrit err := h.copyWebsocketFrame(rw, cc, buf, "server", ro) select { case <-ticker.C: - if err != nil { - ro.Err = err.Error() - } - ro.Duration = time.Since(start) - ro.Time = time.Now() - if err := ro.Record(ctx, h.Recorder); err != nil { - log.Errorf("record: %v", err) + if err == nil { + ro.Duration = time.Since(start) + ro.Time = time.Now() + if err := ro.Record(ctx, h.Recorder); err != nil { + log.Errorf("record: %v", err) + } } default: }