diff --git a/mercurial/hgweb/protocol.py b/mercurial/hgweb/protocol.py --- a/mercurial/hgweb/protocol.py +++ b/mercurial/hgweb/protocol.py @@ -67,5 +67,5 @@ def iscmd(cmd): def call(repo, req, cmd): p = webproto(req) - r = wireproto.dispatch(repo, p, cmd) + wireproto.dispatch(repo, p, cmd) yield p.response diff --git a/mercurial/sshserver.py b/mercurial/sshserver.py --- a/mercurial/sshserver.py +++ b/mercurial/sshserver.py @@ -93,7 +93,9 @@ class sshserver(object): def serve_one(self): cmd = self.fin.readline()[:-1] - if cmd and not wireproto.dispatch(self.repo, self, cmd): + if cmd and cmd in wireproto.commands: + wireproto.dispatch(self.repo, self, cmd) + elif cmd: impl = getattr(self, 'do_' + cmd, None) if impl: r = impl() diff --git a/mercurial/wireproto.py b/mercurial/wireproto.py --- a/mercurial/wireproto.py +++ b/mercurial/wireproto.py @@ -134,14 +134,11 @@ class wirerepository(repo.repository): # server side def dispatch(repo, proto, command): - if command not in commands: - return False func, spec = commands[command] args = proto.getargs(spec) r = func(repo, proto, *args) if r != None: proto.respond(r) - return True def between(repo, proto, pairs): pairs = [decodelist(p, '-') for p in pairs.split(" ")]