# HG changeset patch # User Edouard Gomez # Date 1125585692 25200 # Node ID 2ae9c319e6fe7c642e5738a9be792a1555ea9863 # Parent 24d553b598e84d7d87c976069f505e7872bfc381 Output Content-encoding for tar.gz and tar.bz2 snapshots If the HTTP header 'Content-encoding' is missing for tar.gz snapshots, some gzip capable proxies can bork the tarball and serve unusable files to users. GZ tarballs are served using Content-encoding: gzip. BZ2 tarballs are served using Content-encoding: x-bzip2. diff -r 24d553b598e8 -r 2ae9c319e6fe mercurial/hgweb.py --- a/mercurial/hgweb.py Wed Aug 31 21:07:36 2005 +0200 +++ b/mercurial/hgweb.py Thu Sep 01 07:41:32 2005 -0700 @@ -689,7 +689,14 @@ mff = self.repo.manifest.readflags(mnode) mtime = int(time.time()) - req.httphdr('application/octet-stream', name[:-1] + '.tar.' + type) + if type == "gz": + encoding = "gzip" + else: + encoding = "x-bzip2" + req.header([('Content-type', 'application/x-tar'), + ('Content-disposition', 'attachment; filename=%s%s%s' % + (name[:-1], '.tar.', type)), + ('Content-encoding', encoding)]) for fname in files: rcont = self.repo.file(fname).read(mf[fname]) finfo = tarfile.TarInfo(name + fname)