Skip to content

Commit 9952ce0

Browse files
committed
TUN-3221: ConnectionOptions tracks numPreviousAttempts.
1 parent 1cbc8fb commit 9952ce0

File tree

4 files changed

+200
-186
lines changed

4 files changed

+200
-186
lines changed

origin/tunnel.go

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -172,16 +172,17 @@ func (c *TunnelConfig) RegistrationOptions(connectionID uint8, OriginLocalIP str
172172
}
173173
}
174174

175-
func (c *TunnelConfig) ConnectionOptions(originLocalAddr string) *tunnelpogs.ConnectionOptions {
175+
func (c *TunnelConfig) ConnectionOptions(originLocalAddr string, numPreviousAttempts uint8) *tunnelpogs.ConnectionOptions {
176176
// attempt to parse out origin IP, but don't fail since it's informational field
177177
host, _, _ := net.SplitHostPort(originLocalAddr)
178178
originIP := net.ParseIP(host)
179179

180180
return &tunnelpogs.ConnectionOptions{
181-
Client: c.NamedTunnel.Client,
182-
OriginLocalIP: originIP,
183-
ReplaceExisting: c.ReplaceExisting,
184-
CompressionQuality: uint8(c.CompressionQuality),
181+
Client: c.NamedTunnel.Client,
182+
OriginLocalIP: originIP,
183+
ReplaceExisting: c.ReplaceExisting,
184+
CompressionQuality: uint8(c.CompressionQuality),
185+
NumPreviousAttempts: numPreviousAttempts,
185186
}
186187
}
187188

@@ -305,7 +306,7 @@ func ServeTunnel(
305306
}()
306307

307308
if config.NamedTunnel != nil {
308-
return RegisterConnection(ctx, handler.muxer, config, connectionIndex, originLocalAddr)
309+
return RegisterConnection(ctx, handler.muxer, config, connectionIndex, originLocalAddr, uint8(backoff.retries))
309310
}
310311

311312
if config.UseReconnectToken && connectedFuse.Value() {
@@ -416,6 +417,7 @@ func RegisterConnection(
416417
config *TunnelConfig,
417418
connectionIndex uint8,
418419
originLocalAddr string,
420+
numPreviousAttempts uint8,
419421
) error {
420422
const registerConnection = "registerConnection"
421423

@@ -432,7 +434,7 @@ func RegisterConnection(
432434
config.NamedTunnel.Auth,
433435
config.NamedTunnel.ID,
434436
connectionIndex,
435-
config.ConnectionOptions(originLocalAddr),
437+
config.ConnectionOptions(originLocalAddr, numPreviousAttempts),
436438
)
437439
if err != nil {
438440
if err.Error() == DuplicateConnectionError {

tunnelrpc/pogs/connectionrpc.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,11 @@ type ClientInfo struct {
2626
}
2727

2828
type ConnectionOptions struct {
29-
Client ClientInfo
30-
OriginLocalIP net.IP `capnp:"originLocalIp"`
31-
ReplaceExisting bool
32-
CompressionQuality uint8
29+
Client ClientInfo
30+
OriginLocalIP net.IP `capnp:"originLocalIp"`
31+
ReplaceExisting bool
32+
CompressionQuality uint8
33+
NumPreviousAttempts uint8
3334
}
3435

3536
type TunnelAuth struct {

tunnelrpc/tunnelrpc.capnp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,8 @@ struct ConnectionOptions {
9898
replaceExisting @2 :Bool;
9999
# cross stream compression setting, 0 - off, 3 - high
100100
compressionQuality @3 :UInt8;
101+
# number of previous attempts to send RegisterConnection
102+
numPreviousAttempts @4 :UInt8;
101103
}
102104

103105
struct ConnectionResponse {

0 commit comments

Comments
 (0)