@@ -22,7 +22,6 @@ import (
2222 "github.com/jessevdk/go-flags"
2323 "github.com/lightninglabs/faraday/frdrpc"
2424 "github.com/lightninglabs/lightning-terminal/litrpc"
25- "github.com/lightninglabs/lightning-terminal/session"
2625 "github.com/lightninglabs/lndclient"
2726 "github.com/lightninglabs/loop"
2827 "github.com/lightninglabs/loop/loopd"
@@ -154,9 +153,8 @@ type LightningTerminal struct {
154153 rpcProxy * rpcProxy
155154 httpServer * http.Server
156155
157- sessionDB * session.DB
158- sessionServer * session.Server
159- sessionRpcServer * sessionRpcServer
156+ sessionRpcServer * sessionRpcServer
157+ sessionRpcServerStarted bool
160158
161159 restHandler http.Handler
162160 restCancel func ()
@@ -194,52 +192,18 @@ func (g *LightningTerminal) Run() error {
194192 g .rpcProxy = newRpcProxy (
195193 g .cfg , g , getAllMethodPermissions (), bufRpcListener ,
196194 )
197-
198- // Create an instance of the local Terminal Connect session store DB.
199- networkDir := path .Join (g .cfg .LitDir , g .cfg .Network )
200- g .sessionDB , err = session .NewDB (networkDir , session .DBFilename )
201- if err != nil {
202- return fmt .Errorf ("error creating session DB: %v" , err )
203- }
204-
205- // Create the gRPC server that handles adding/removing sessions and the
206- // actual mailbox server that spins up the Terminal Connect server
207- // interface.
208- g .sessionServer = session .NewServer (
209- func (opts ... grpc.ServerOption ) * grpc.Server {
210- allOpts := []grpc.ServerOption {
211- grpc .CustomCodec (grpcProxy .Codec ()), // nolint: staticcheck,
212- grpc .UnknownServiceHandler (
213- grpcProxy .TransparentHandler (
214- g .rpcProxy .director ,
215- ),
195+ g .sessionRpcServer , err = newSessionRPCServer (& sessionRpcServerConfig {
196+ basicAuth : g .rpcProxy .basicAuth ,
197+ dbDir : path .Join (g .cfg .LitDir , g .cfg .Network ),
198+ grpcOptions : []grpc.ServerOption {
199+ grpc .CustomCodec (grpcProxy .Codec ()), // nolint: staticcheck,
200+ grpc .UnknownServiceHandler (
201+ grpcProxy .TransparentHandler (
202+ g .rpcProxy .director ,
216203 ),
217- }
218- allOpts = append (allOpts , opts ... )
219- mailboxGrpcServer := grpc .NewServer (allOpts ... )
220-
221- _ = g .RegisterGrpcSubserver (mailboxGrpcServer )
222-
223- return mailboxGrpcServer
204+ ),
224205 },
225- )
226- g .sessionRpcServer = & sessionRpcServer {
227- basicAuth : g .rpcProxy .basicAuth ,
228- db : g .sessionDB ,
229- sessionServer : g .sessionServer ,
230- quit : make (chan struct {}),
231- }
232-
233- // Now start up all previously created sessions.
234- sessions , err := g .sessionDB .ListSessions ()
235- if err != nil {
236- return fmt .Errorf ("error listing sessions: %v" , err )
237- }
238- for _ , sess := range sessions {
239- if err := g .sessionRpcServer .resumeSession (sess ); err != nil {
240- return fmt .Errorf ("error resuming sesion: %v" , err )
241- }
242- }
206+ })
243207
244208 // Overwrite the loop and pool daemon's user agent name so it sends
245209 // "litd" instead of "loopd" and "poold" respectively.
@@ -565,6 +529,11 @@ func (g *LightningTerminal) startSubservers() error {
565529 g .poolStarted = true
566530 }
567531
532+ if err = g .sessionRpcServer .start (); err != nil {
533+ return err
534+ }
535+ g .sessionRpcServerStarted = true
536+
568537 return nil
569538}
570539
@@ -839,12 +808,12 @@ func (g *LightningTerminal) shutdown() error {
839808 }
840809 }
841810
842- g .sessionRpcServer .stop ()
843- if err := g .sessionDB .Close (); err != nil {
844- log .Errorf ("Error closing session DB: %v" , err )
845- returnErr = err
811+ if g .sessionRpcServerStarted {
812+ if err := g .sessionRpcServer .stop (); err != nil {
813+ log .Errorf ("Error closing session DB: %v" , err )
814+ returnErr = err
815+ }
846816 }
847- g .sessionServer .Stop ()
848817
849818 if g .lndClient != nil {
850819 g .lndClient .Close ()
0 commit comments