diff -r 55e901396005 -r 37d7a1d18b97 mercurial/wireprotoserver.py --- a/mercurial/wireprotoserver.py Tue Mar 13 14:15:10 2018 -0700 +++ b/mercurial/wireprotoserver.py Tue Mar 13 19:44:59 2018 -0700 @@ -32,6 +32,7 @@ HGTYPE = 'application/mercurial-0.1' HGTYPE2 = 'application/mercurial-0.2' HGERRTYPE = 'application/hg-error' +HTTPV2TYPE = 'application/mercurial-tbd' HTTPV2 = wireprototypes.HTTPV2 SSHV1 = wireprototypes.SSHV1 @@ -335,6 +336,23 @@ res.setbodybytes(_('invalid wire protocol command: %s') % command) return + if req.headers.get(b'Accept') != HTTPV2TYPE: + res.status = b'406 Not Acceptable' + res.headers[b'Content-Type'] = b'text/plain' + res.setbodybytes(_('client MUST specify Accept header with value: %s\n') + % HTTPV2TYPE) + return + + if (b'Content-Type' in req.headers + and req.headers[b'Content-Type'] != HTTPV2TYPE): + res.status = b'415 Unsupported Media Type' + # TODO we should send a response with appropriate media type, + # since client does Accept it. + res.headers[b'Content-Type'] = b'text/plain' + res.setbodybytes(_('client MUST send Content-Type header with ' + 'value: %s\n') % HTTPV2TYPE) + return + # We don't do anything meaningful yet. res.status = b'200 OK' res.headers[b'Content-Type'] = b'text/plain'