Browse Source

Fix: implement common.MetricsSource

mirokuratczyk 2 years ago
parent
commit
27dd2e6b83

+ 10 - 0
psiphon/common/transforms/httpNormalizer.go

@@ -28,6 +28,7 @@ import (
 	"strconv"
 	"time"
 
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common"
 	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/errors"
 )
 
@@ -622,6 +623,15 @@ func (t *HTTPNormalizer) SetWriteDeadline(tt time.Time) error {
 	return t.Conn.SetReadDeadline(tt)
 }
 
+func (t *HTTPNormalizer) GetMetrics() common.LogFields {
+	// Relay any metrics from the underlying conn.
+	m, ok := t.Conn.(common.MetricsSource)
+	if ok {
+		return m.GetMetrics()
+	}
+	return nil
+}
+
 // Note: all config fields must be set before calling Accept.
 type HTTPNormalizerListener struct {
 	HeaderWriteOrder          []string

+ 9 - 0
psiphon/common/transforms/httpTransformer.go

@@ -276,6 +276,15 @@ func (t *HTTPTransformer) Write(b []byte) (int, error) {
 	return n, err
 }
 
+func (t *HTTPTransformer) GetMetrics() common.LogFields {
+	// Relay any metrics from the underlying conn.
+	m, ok := t.Conn.(common.MetricsSource)
+	if ok {
+		return m.GetMetrics()
+	}
+	return nil
+}
+
 func WrapDialerWithHTTPTransformer(dialer common.Dialer, params *HTTPTransformerParameters) common.Dialer {
 	return func(ctx context.Context, network, addr string) (net.Conn, error) {
 		conn, err := dialer(ctx, network, addr)