From c53c3be577816d93f1626de1e61253c3f5e017b6 Mon Sep 17 00:00:00 2001 From: Remco Date: Mon, 11 Jul 2016 22:15:29 +0200 Subject: [PATCH] fixed issue with go-clamd --- transfersh-server/handlers.go | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) 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) {