mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-23 15:08:16 +02:00
app de bureau : UN SEUL process proprietaire de la conversation
La conversation est un objet en memoire persiste dans conversation.json : deux process qui la servent = deux fils divergents qui s'ecrasent. Sous Linux le service jean-link sert deja les DEUX surfaces (UI locale :8090 + tunnel) pour cette raison ; le worker detache ajoute en v0.5.4 rompait ce principe sur Mac/Windows -> conversations differentes entre le local et app.ajean.link. L'app fait desormais tourner le tunnel dans son propre process, avec le MEME mux que l'UI locale, et supprime au demarrage tout worker detache rescape. Corollaire assume : l'acces distant vit tant que l'app est ouverte (sur un portable qui s'endort, c'etait deja le cas en pratique).
This commit is contained in:
1 parent
f8e856ed7c
commit
1118a15273
2 files changed
+135
-54
No files matched your search
+13
-16
@@ -39,27 +39,24 @@ func cmdApp(args []string) error {
|
||||
return openBrowser(url)
|
||||
}
|
||||
|
||||
// Sert l'UI en tâche de fond ; l'icône tray tient le premier plan.
|
||||
go func() { _ = http.Serve(ln, newWebMux()) }()
|
||||
// UN SEUL process propriétaire de la conversation, comme le service jean-link
|
||||
// sous Linux : l'app sert l'UI locale ET le tunnel avec le MÊME mux. Deux
|
||||
// process qui servent la conversation (objet en mémoire persisté dans
|
||||
// conversation.json) donnent deux fils divergents entre le local et
|
||||
// app.ajean.link — le bug qu'on a vécu avec le worker détaché.
|
||||
appOwnsLink = true
|
||||
appWebMux = newWebMux()
|
||||
go func() { _ = http.Serve(ln, appWebMux) }()
|
||||
|
||||
// Accès distant déjà configuré ? On relance le tunnel. Sous Linux systemd s'en
|
||||
// charge au boot, mais sur un poste de bureau (macOS/Windows) personne ne le
|
||||
// fait : sans ça le token reste enregistré et le panneau affiche « service
|
||||
// arrêté » à chaque démarrage de l'app.
|
||||
go func() {
|
||||
if readLinkToken() == "" {
|
||||
return
|
||||
}
|
||||
// Worker rescapé d'une AUTRE copie de l'app (ancienne version, copie
|
||||
// translocatée…) : il tourne toujours — le tunnel est détaché exprès — et
|
||||
// continue de servir l'UI distante avec du code périmé. On le remplace.
|
||||
if linkWorkerIsStale() {
|
||||
_ = linkServiceCtl("restart")
|
||||
return
|
||||
}
|
||||
if !linkServiceActive() {
|
||||
_ = linkServiceCtl("start")
|
||||
}
|
||||
// Worker détaché rescapé (version antérieure, autre copie de l'app) : il
|
||||
// possède SA propre conversation et écrase la nôtre. On le supprime avant
|
||||
// de prendre la main.
|
||||
killForeignLinkWorker()
|
||||
startAppLink(appWebMux)
|
||||
}()
|
||||
|
||||
sp := showSplash("Lancement de Jean en cours…")
|
||||
|
||||
Reference in new issue
Block a user