fixed nil pointer dereferece

closes #128
This commit is contained in:
2024-01-12 10:55:29 +01:00
parent 8aeffb8d9f
commit 3d9a7e9810
5 changed files with 17 additions and 7 deletions

View File

@@ -4,6 +4,7 @@ import (
"encoding/gob"
"errors"
"fmt"
"log/slog"
"os"
"path/filepath"
"sync"
@@ -115,7 +116,7 @@ func (m *MemoryDB) Persist() error {
}
// WIP: Restore a persisted state
func (m *MemoryDB) Restore() {
func (m *MemoryDB) Restore(logger *slog.Logger) {
fd, err := os.Open("session.dat")
if err != nil {
return
@@ -136,6 +137,7 @@ func (m *MemoryDB) Restore() {
Progress: proc.Progress,
Output: proc.Output,
Params: proc.Params,
Logger: logger,
}
m.table.Store(proc.Id, restored)

View File

@@ -91,7 +91,11 @@ func PlaylistDetect(req DownloadRequest, mq *MessageQueue, db *MemoryDB, logger
return err
}
proc := &Process{Url: req.URL, Params: req.Params}
proc := &Process{
Url: req.URL,
Params: req.Params,
Logger: logger,
}
mq.Publish(proc)
logger.Info("sending new process to message queue", slog.String("url", proc.Url))

View File

@@ -4,6 +4,7 @@ import (
"context"
"database/sql"
"errors"
"log/slog"
"os"
"github.com/google/uuid"
@@ -11,9 +12,10 @@ import (
)
type Service struct {
mdb *internal.MemoryDB
db *sql.DB
mq *internal.MessageQueue
mdb *internal.MemoryDB
db *sql.DB
mq *internal.MessageQueue
logger *slog.Logger
}
func (s *Service) Exec(req internal.DownloadRequest) (string, error) {
@@ -24,6 +26,7 @@ func (s *Service) Exec(req internal.DownloadRequest) (string, error) {
Path: req.Path,
Filename: req.Rename,
},
Logger: s.logger,
}
id := s.mdb.Set(p)

View File

@@ -71,7 +71,7 @@ func (s *Service) Progess(args Args, progress *internal.DownloadProgress) error
// Progess retrieves available format for a given resource
func (s *Service) Formats(args Args, meta *internal.DownloadFormats) error {
var err error
p := internal.Process{Url: args.URL}
p := internal.Process{Url: args.URL, Logger: s.logger}
*meta, err = p.GetFormatsSync()
return err
}

View File

@@ -41,7 +41,6 @@ type serverConfig struct {
func RunBlocking(host string, port int, frontend fs.FS, dbPath string) {
var mdb internal.MemoryDB
mdb.Restore()
logger := slog.New(
slog.NewTextHandler(
@@ -50,6 +49,8 @@ func RunBlocking(host string, port int, frontend fs.FS, dbPath string) {
),
)
mdb.Restore(logger)
db, err := sql.Open("sqlite", dbPath)
if err != nil {
logger.Error("failed to open database", slog.String("err", err.Error()))