Opened 12 years ago
Last modified 12 years ago
#198 new defect
improve handling of code errors during negotiation
Reported by: | Brian Warner | Owned by: | |
---|---|---|---|
Priority: | minor | Milestone: | undecided |
Component: | negotiation | Version: | 0.6.3 |
Keywords: | Cc: |
Description
While working on #195, I tried to exercise the error-handling code by inserting raise KeyError("xyz")
into the start of negotiate.evaluateHello
, restarting a tahoe node with the modified code, then watch a flogtool-tail of a second node as it reconnected to the now-broken node. (both the second node and the flogtool process were started before breaking negotiate.py).
What I expected to see was a RemoteNegotiationError
triggered by the KeyError
. Instead, my local monitoring node got a BananaError
, as it received the error block (banana-decision-version: 1, error: internal server error see logs
) while it was expecting banana data.
I think this means the receiving code is jumping forward to receive_phase=BANANA
too early. It might also mean that my code in negotiationFailed
that tries to unpack a RemoteNegotiationError
is unexercised. That code runs after all the necessary events have been eventual-sent, so it shouldn't break anything if it fails, but it'd be nice to capture remote errors usefully.