Skip to content

Commit

Permalink
use RWLock on handlers, fix close bug
Browse files Browse the repository at this point in the history
  • Loading branch information
qbit committed Dec 10, 2021
1 parent 8c113d9 commit 68c586f
Showing 1 changed file with 15 additions and 9 deletions.
24 changes: 15 additions & 9 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,12 +60,15 @@ type userHandler struct {
name string
}

type userHandlers []userHandler
type userHandlers struct {
list []userHandler
mu sync.RWMutex
}

func (u userHandlers) find(name string) *userHandler {
for i := range u {
if u[i].name == name {
return &u[i]
func (u *userHandlers) find(name string) *userHandler {
for i := range u.list {
if u.list[i].name == name {
return &u.list[i]
}
}
return nil
Expand Down Expand Up @@ -233,12 +236,12 @@ func main() {
ht.Comment = '#'
ht.TrimLeadingSpace = true

err = p.Close()
entries, err := ht.ReadAll()
if err != nil {
log.Fatal(err)
}

entries, err := ht.ReadAll()
err = p.Close()
if err != nil {
log.Fatal(err)
}
Expand All @@ -251,7 +254,7 @@ func main() {
if auth {
for u := range users {
uPath := path.Join(davDir, u)
handlers = append(handlers, userHandler{
handlers.list = append(handlers.list, userHandler{
name: u,
dav: &webdav.Handler{
LockSystem: webdav.NewMemLS(),
Expand All @@ -261,7 +264,7 @@ func main() {
})
}
} else {
handlers = append(handlers, userHandler{
handlers.list = append(handlers.list, userHandler{
name: "",
dav: &webdav.Handler{
LockSystem: webdav.NewMemLS(),
Expand Down Expand Up @@ -296,7 +299,10 @@ func main() {
}
}

handlers.mu.RLock()
handler := handlers.find(user)
handlers.mu.RUnlock()

if handler == nil {
http.NotFound(w, r)
return
Expand Down

0 comments on commit 68c586f

Please sign in to comment.