tailcfg: pointerify RegisterRequest.Auth, omitemptify RegisterResponseAuth

We were storing server-side lots of:

    "Auth":{"Provider":"","LoginName":"","Oauth2Token":null,"AuthKey":""},

That was about 7% of our total storage of pending RegisterRequest
bodies.

Updates tailscale/corp#19327

Change-Id: Ib73842759a2b303ff5fe4c052a76baea0d68ae7d
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
Brad Fitzpatrick
2024-04-20 10:04:04 -07:00
committed by Brad Fitzpatrick
parent 375617c5c8
commit 05bfa022f2
5 changed files with 20 additions and 12 deletions

View File

@@ -6,6 +6,7 @@ package controlclient
import (
"bufio"
"bytes"
"cmp"
"context"
"crypto/ed25519"
"encoding/base64"
@@ -586,10 +587,14 @@ func (c *Direct) doLogin(ctx context.Context, opt loginOpt) (mustRegen bool, new
c.logf("RegisterReq: onode=%v node=%v fup=%v nks=%v",
request.OldNodeKey.ShortString(),
request.NodeKey.ShortString(), opt.URL != "", len(nodeKeySignature) > 0)
request.Auth.Oauth2Token = opt.Token
request.Auth.Provider = persist.Provider
request.Auth.LoginName = persist.UserProfile.LoginName
request.Auth.AuthKey = authKey
if opt.Token != nil || cmp.Or(persist.Provider, persist.UserProfile.LoginName, authKey) != "" {
request.Auth = &tailcfg.RegisterResponseAuth{
Oauth2Token: opt.Token,
Provider: persist.Provider,
LoginName: persist.UserProfile.LoginName,
AuthKey: authKey,
}
}
err = signRegisterRequest(&request, c.serverURL, c.serverLegacyKey, machinePrivKey.Public())
if err != nil {
// If signing failed, clear all related fields