mirror of
https://github.com/netbirdio/netbird.git
synced 2026-09-12 17:59:06 +02:00
[client] Keep the device name on the context used to authenticate
Moving authentication onto the start context dropped the device name with it: registration happens during login and reads the name from the context, so every client registered under the host's hostname instead of its configured name. A run of 100 embedded clients produced 191 peers all sharing one name. Carry the value onto the start context explicitly so the deadline and the device name travel together.
This commit is contained in:
@@ -305,13 +305,18 @@ func (c *Client) Start(startCtx context.Context) error {
|
||||
// never completes a stream leaves them retrying with no deadline of their
|
||||
// own, so a caller's start timeout has to reach them. Neither outlives
|
||||
// startup: authClient is closed below.
|
||||
authClient, err := auth.NewAuth(startCtx, c.config.PrivateKey, c.config.ManagementURL, c.config)
|
||||
// Carry the device name onto the start context: registration happens during
|
||||
// login and reads it from there, so authenticating on a context without it
|
||||
// would register every client under the host's hostname instead.
|
||||
authCtx := context.WithValue(startCtx, system.DeviceNameCtxKey, c.deviceName) //nolint:staticcheck
|
||||
|
||||
authClient, err := auth.NewAuth(authCtx, c.config.PrivateKey, c.config.ManagementURL, c.config)
|
||||
if err != nil {
|
||||
return fmt.Errorf("create auth client: %w", err)
|
||||
}
|
||||
defer authClient.Close()
|
||||
|
||||
if err, _ := authClient.Login(startCtx, c.setupKey, c.jwtToken); err != nil {
|
||||
if err, _ := authClient.Login(authCtx, c.setupKey, c.jwtToken); err != nil {
|
||||
return fmt.Errorf("login: %w", err)
|
||||
}
|
||||
client := internal.NewConnectClient(ctx, c.config, c.recorder)
|
||||
|
||||
Reference in New Issue
Block a user