1406 The payload contains the capabilities information for the reply""" |
1406 The payload contains the capabilities information for the reply""" |
1407 caps = decodecaps(inpart.read()) |
1407 caps = decodecaps(inpart.read()) |
1408 if op.reply is None: |
1408 if op.reply is None: |
1409 op.reply = bundle20(op.ui, caps) |
1409 op.reply = bundle20(op.ui, caps) |
1410 |
1410 |
|
1411 class AbortFromPart(error.Abort): |
|
1412 """Sub-class of Abort that denotes an error from a bundle2 part.""" |
|
1413 |
1411 @parthandler('error:abort', ('message', 'hint')) |
1414 @parthandler('error:abort', ('message', 'hint')) |
1412 def handleerrorabort(op, inpart): |
1415 def handleerrorabort(op, inpart): |
1413 """Used to transmit abort error over the wire""" |
1416 """Used to transmit abort error over the wire""" |
1414 raise error.Abort(inpart.params['message'], hint=inpart.params.get('hint')) |
1417 raise AbortFromPart(inpart.params['message'], |
|
1418 hint=inpart.params.get('hint')) |
1415 |
1419 |
1416 @parthandler('error:pushkey', ('namespace', 'key', 'new', 'old', 'ret', |
1420 @parthandler('error:pushkey', ('namespace', 'key', 'new', 'old', 'ret', |
1417 'in-reply-to')) |
1421 'in-reply-to')) |
1418 def handleerrorpushkey(op, inpart): |
1422 def handleerrorpushkey(op, inpart): |
1419 """Used to transmit failure of a mandatory pushkey over the wire""" |
1423 """Used to transmit failure of a mandatory pushkey over the wire""" |