Fix race condition

This commit is contained in:
Deluan 2023-04-01 17:45:18 -04:00 committed by Joe Stump
parent b663ca71d8
commit 2a7c4309a6
No known key found for this signature in database
GPG Key ID: 29151C3EC48A0EB9
2 changed files with 7 additions and 9 deletions

View File

@ -158,13 +158,11 @@ func (s *scanner) RescanAll(ctx context.Context, fullRescan bool) error {
return nil
}
func (s *scanner) getStatus(folder string) *scanStatus {
func (s *scanner) getStatus(folder string) (scanStatus, bool) {
s.lock.RLock()
defer s.lock.RUnlock()
if status, ok := s.status[folder]; ok {
return status
}
return nil
status, ok := s.status[folder]
return *status, ok
}
func (s *scanner) incStatusCounter(folder string, numFiles uint32) (totalFolders uint32, totalFiles uint32) {
@ -199,8 +197,8 @@ func (s *scanner) setStatusEnd(folder string, lastUpdate time.Time) {
}
func (s *scanner) Status(mediaFolder string) (*StatusInfo, error) {
status := s.getStatus(mediaFolder)
if status == nil {
status, ok := s.getStatus(mediaFolder)
if !ok {
return nil, errors.New("mediaFolder not found")
}
return &StatusInfo{

View File

@ -111,7 +111,7 @@ func writeEvent(w io.Writer, event message, timeout time.Duration) error {
_, err := fmt.Fprintf(w, "id: %d\nevent: %s\ndata: %s\n\n", event.id, event.event, event.data)
// If the writer is an http.Flusher, flush the data immediately.
if flusher, ok := w.(http.Flusher); ok {
if flusher, ok := w.(http.Flusher); ok && flusher != nil {
flusher.Flush()
}
@ -135,7 +135,7 @@ func (b *broker) ServeHTTP(w http.ResponseWriter, r *http.Request) {
// Make sure that the writer supports flushing.
_, ok := w.(http.Flusher)
if !ok {
log.Error(w, "Streaming unsupported! Events cannot be sent to this client", "address", r.RemoteAddr,
log.Error(r, "Streaming unsupported! Events cannot be sent to this client", "address", r.RemoteAddr,
"userAgent", r.UserAgent(), "user", user.UserName)
http.Error(w, "Streaming unsupported!", http.StatusInternalServerError)
return