@@ -422,7 +422,7 @@ func createExtClient(w http.ResponseWriter, r *http.Request) {
422
422
slog .Info ("created extclient" , "user" , r .Header .Get ("user" ), "network" , node .Network , "clientid" , extclient .ClientID )
423
423
w .WriteHeader (http .StatusOK )
424
424
go func () {
425
- if err := mq .PublishPeerUpdate (); err != nil {
425
+ if err := mq .PublishPeerUpdate (false ); err != nil {
426
426
logger .Log (1 , "error setting ext peers on " + nodeid + ": " + err .Error ())
427
427
}
428
428
if servercfg .IsDNSMode () {
@@ -510,22 +510,37 @@ func updateExtClient(w http.ResponseWriter, r *http.Request) {
510
510
return
511
511
}
512
512
logger .Log (0 , r .Header .Get ("user" ), "updated ext client" , update .ClientID )
513
- if sendPeerUpdate { // need to send a peer update to the ingress node as enablement of one of it's clients has changed
514
- if ingressNode , err := logic .GetNodeByID (newclient .IngressGatewayID ); err == nil {
515
- if err = mq .PublishPeerUpdate (); err != nil {
516
- logger .Log (1 , "error setting ext peers on" , ingressNode .ID .String (), ":" , err .Error ())
517
- }
518
- }
519
- }
520
513
w .WriteHeader (http .StatusOK )
521
514
json .NewEncoder (w ).Encode (newclient )
522
- if changedID {
523
- go func () {
524
- if servercfg .IsDNSMode () {
525
- logic .SetDNS ()
515
+
516
+ go func () {
517
+ if changedID && servercfg .IsDNSMode () {
518
+ logic .SetDNS ()
519
+ }
520
+ if sendPeerUpdate { // need to send a peer update to the ingress node as enablement of one of it's clients has changed
521
+ ingressNode , err := logic .GetNodeByID (newclient .IngressGatewayID )
522
+ if err == nil {
523
+ if err = mq .PublishPeerUpdate (false ); err != nil {
524
+ logger .Log (1 , "error setting ext peers on" , ingressNode .ID .String (), ":" , err .Error ())
525
+ }
526
526
}
527
- }()
528
- }
527
+ if ! update .Enabled {
528
+ ingressHost , err := logic .GetHost (ingressNode .HostID .String ())
529
+ if err != nil {
530
+ slog .Error ("Failed to get ingress host" , "node" , ingressNode .ID .String (), "error" , err )
531
+ return
532
+ }
533
+ nodes , err := logic .GetAllNodes ()
534
+ if err != nil {
535
+ slog .Error ("Failed to get nodes" , "error" , err )
536
+ return
537
+ }
538
+ go mq .PublishSingleHostPeerUpdate (ingressHost , nodes , nil , []models.ExtClient {oldExtClient }, false )
539
+ }
540
+ }
541
+
542
+ }()
543
+
529
544
}
530
545
531
546
// swagger:route DELETE /api/extclients/{network}/{clientid} ext_client deleteExtClient
0 commit comments