Browse Source

Indicate QUIC dial early with quic_dial_early metric

Amir Khan 1 year ago
parent
commit
a12a205fe9
2 changed files with 17 additions and 1 deletions
  1. 2 1
      psiphon/common/protocol/packed.go
  2. 15 0
      psiphon/common/quic/quic.go

+ 2 - 1
psiphon/common/protocol/packed.go

@@ -796,8 +796,9 @@ func init() {
 		{144, "tls_did_resume", intConverter},
 		{145, "quic_sent_ticket", intConverter},
 		{146, "quic_did_resume", intConverter},
+		{147, "quic_dial_early", intConverter},
 
-		// Last key value = 142
+		// Last key value = 147
 	}
 
 	for _, spec := range packedAPIParameterSpecs {

+ 15 - 0
psiphon/common/quic/quic.go

@@ -746,6 +746,12 @@ func (conn *Conn) GetMetrics() common.LogFields {
 
 	metrics := conn.connection.connectionMetrics()
 
+	dialEarly := "0"
+	if metrics.dialEarly {
+		dialEarly = "1"
+	}
+	logFields["quic_dial_early"] = dialEarly
+
 	quicSentTicket := "0"
 	if metrics.tlsClientSentTicket {
 		quicSentTicket = "1"
@@ -866,6 +872,13 @@ func (t *QUICTransporter) GetMetrics() common.LogFields {
 
 	metrics := t.quicConnectionMetrics.Load()
 	if m, ok := metrics.(*quicConnectionMetrics); ok {
+
+		dialEarly := "0"
+		if m.dialEarly {
+			dialEarly = "1"
+		}
+		logFields["quic_dial_early"] = dialEarly
+
 		quicSentTicket := "0"
 		if m.tlsClientSentTicket {
 			quicSentTicket = "1"
@@ -996,6 +1009,7 @@ type quicListener interface {
 // quicConnectionMetircs provides metrics for a QUIC connection,
 // after a dial has been made.
 type quicConnectionMetrics struct {
+	dialEarly           bool
 	tlsClientSentTicket bool
 	tlsDidResume        bool
 }
@@ -1203,6 +1217,7 @@ func dialQUIC(
 		}
 
 		metrics := quicConnectionMetrics{
+			dialEarly:           dialEarly,
 			tlsClientSentTicket: dialConnection.ConnectionState().TLS.DidResume,
 			tlsDidResume:        dialConnection.TLSConnectionMetrics().ClientSentTicket,
 		}