diff --git a/transfersh-server/handlers.go b/transfersh-server/handlers.go index cc9b437..6560989 100644 --- a/transfersh-server/handlers.go +++ b/transfersh-server/handlers.go @@ -270,24 +270,22 @@ func scanHandler(w http.ResponseWriter, r *http.Request) { c := clamd.NewClamd(config.CLAMAV_DAEMON_HOST) - response, err := c.ScanStream(reader) + abort := make(chan bool) + response, err := c.ScanStream(reader, abort) if err != nil { log.Printf("%s", err.Error()) http.Error(w, err.Error(), 500) return } - var b string - - for s := range response { - b += s - - if !strings.HasPrefix(s, "stream: ") { - continue - } - - w.Write([]byte(fmt.Sprintf("%v\n", s[8:]))) + select { + case s := <-response: + w.Write([]byte(fmt.Sprintf("%v\n", s.Status))) + case <-time.After(time.Second * 60): + abort <- true } + + close(abort) } func putHandler(w http.ResponseWriter, r *http.Request) {