diff -r 871c77e78f5d -r f4522df38c65 mercurial/wireproto.py --- a/mercurial/wireproto.py Wed Aug 03 16:41:14 2011 -0500 +++ b/mercurial/wireproto.py Tue Aug 02 15:21:10 2011 -0400 @@ -335,6 +335,10 @@ def __init__(self, res): self.res = res +class ooberror(object): + def __init__(self, message): + self.message = message + def dispatch(repo, proto, command): func, spec = commands[command] args = proto.getargs(spec) @@ -376,6 +380,8 @@ result = func(repo, proto, *[data[k] for k in keys]) else: result = func(repo, proto) + if isinstance(result, ooberror): + return result res.append(escapearg(result)) return ';'.join(res)