fix multi-peer generation, fix prefix handling (#491)

(cherry picked from commit c20f17cddf)
This commit is contained in:
Christoph Haas
2025-08-09 15:55:29 +02:00
parent 9be2133220
commit b546eec4ed
7 changed files with 18 additions and 22 deletions

View File

@@ -233,7 +233,7 @@ func (m Manager) CreateMultiplePeers(
return nil, err
}
var newPeers []*domain.Peer
createdPeers := make([]domain.Peer, 0, len(r.UserIdentifiers))
for _, id := range r.UserIdentifiers {
freshPeer, err := m.PreparePeer(ctx, interfaceId)
@@ -242,27 +242,22 @@ func (m Manager) CreateMultiplePeers(
}
freshPeer.UserIdentifier = domain.UserIdentifier(id) // use id as user identifier. peers are allowed to have invalid user identifiers
if r.Suffix != "" {
freshPeer.DisplayName += " " + r.Suffix
if r.Prefix != "" {
freshPeer.DisplayName = r.Prefix + " " + freshPeer.DisplayName
}
if err := m.validatePeerCreation(ctx, nil, freshPeer); err != nil {
return nil, fmt.Errorf("creation not allowed: %w", err)
}
newPeers = append(newPeers, freshPeer)
}
// Save immediately to reserve the assigned IPs so the next prepared peer gets the next free IPs
if err := m.savePeers(ctx, freshPeer); err != nil {
return nil, fmt.Errorf("failed to create new peer %s: %w", freshPeer.Identifier, err)
}
err := m.savePeers(ctx, newPeers...)
if err != nil {
return nil, fmt.Errorf("failed to create new peers: %w", err)
}
createdPeers = append(createdPeers, *freshPeer)
createdPeers := make([]domain.Peer, len(newPeers))
for i := range newPeers {
createdPeers[i] = *newPeers[i]
m.bus.Publish(app.TopicPeerCreated, *newPeers[i])
m.bus.Publish(app.TopicPeerCreated, *freshPeer)
}
return createdPeers, nil