From 39c85f10c711da491525d1c849ceff9527d27a01 Mon Sep 17 00:00:00 2001 From: Meo597 <197331664+Meo597@users.noreply.github.com> Date: Fri, 30 Oct 2026 10:45:59 +0800 Subject: [PATCH] gz --- app/geodata/download.go | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/app/geodata/download.go b/app/geodata/download.go index 4d941af58..a7839318c 100644 --- a/app/geodata/download.go +++ b/app/geodata/download.go @@ -1,6 +1,8 @@ package geodata import ( + "bufio" + "compress/gzip" "context" "crypto/tls" go_errors "errors" @@ -197,7 +199,22 @@ func (d *downloader) fetch(rawURL string, writer io.Writer) error { return errors.New("geodata download exceeds 256 MiB") } - n, err := io.Copy(writer, io.LimitReader(resp.Body, maxDownloadSize+1)) + br := bufio.NewReader(resp.Body) + header, err := br.Peek(2) + if err != nil && err != io.EOF { + return err + } + var body io.Reader = br + if len(header) == 2 && header[0] == 0x1f && header[1] == 0x8b { + zr, err := gzip.NewReader(br) + if err != nil { + return err + } + defer zr.Close() + body = zr + } + + n, err := io.Copy(writer, io.LimitReader(body, maxDownloadSize+1)) if err != nil { return err }