protocol: command must be checked before passing in

This commit is contained in:
Dirkjan Ochtman 2010-07-16 19:01:34 +02:00
parent 2b7f042140
commit 1a4105fea1
3 changed files with 4 additions and 5 deletions

View File

@ -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

View File

@ -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()

View File

@ -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(" ")]