From ce4333db9adc734977610ae63abd897d53bc3948 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Sat, 13 Jun 2015 01:05:05 +0200 Subject: [PATCH] Don't crash if no etag is returned --- cmd/fdroidcl/http.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/cmd/fdroidcl/http.go b/cmd/fdroidcl/http.go index 6cca02a..1da622b 100644 --- a/cmd/fdroidcl/http.go +++ b/cmd/fdroidcl/http.go @@ -6,13 +6,23 @@ package main import ( "errors" "io/ioutil" + "log" "net/http" "os" ) var errNotModified = errors.New("etag matches, file was not modified") +func respEtag(resp *http.Response) string { + etags, e := resp.Header["Etag"] + if !e || len(etags) == 0 { + return "" + } + return etags[0] +} + func downloadEtag(url, path string) error { + log.Printf("Downloading %s", url) client := &http.Client{} req, err := http.NewRequest("GET", url, nil) @@ -35,7 +45,8 @@ func downloadEtag(url, path string) error { return err } err = ioutil.WriteFile(path, jar, 0644) - err2 := ioutil.WriteFile(etagPath, []byte(resp.Header["Etag"][0]), 0644) + etag := respEtag(resp) + err2 := ioutil.WriteFile(etagPath, []byte(etag), 0644) if err != nil { return err }