# HG changeset patch # User mpm@selenic.com # Date 2005-07-21 23:20:13 # Node ID 8760d0c83b9b350308b926dde182996e4aca01df # Parent c693eafd59674932f65b2629aaf05e7585374e58 Check protocol versions This also allows the old unidentified protocol diff --git a/mercurial/hg.py b/mercurial/hg.py --- a/mercurial/hg.py +++ b/mercurial/hg.py @@ -1744,11 +1744,21 @@ class httprepository: qs = urllib.urlencode(q) cu = "%s?%s" % (self.url, qs) resp = urllib2.urlopen(cu) + proto = resp.headers['content-type'] - if not resp.headers['content-type'].startswith('application/hg'): + # accept old "text/plain" and "application/hg-changegroup" for now + if not proto.startswith('application/mercurial') and \ + not proto.startswith('text/plain') and \ + not proto.startswith('application/hg-changegroup'): raise RepoError("'%s' does not appear to be an hg repository" % self.url) + if proto.startswith('application/mercurial'): + version = proto[22:] + if float(version) > 0.1: + raise RepoError("'%s' uses newer protocol %s" % + (self.url, version)) + return resp def heads(self): diff --git a/mercurial/hgweb.py b/mercurial/hgweb.py --- a/mercurial/hgweb.py +++ b/mercurial/hgweb.py @@ -670,7 +670,7 @@ class hgweb: sys.stdout.write(" ".join(map(hex, b)) + "\n") elif args['cmd'][0] == 'between': - httphdr("application/hg-0.1") + httphdr("application/mercurial-0.1") nodes = [] if args.has_key('pairs'): pairs = [ map(bin, p.split("-"))