I have now replaced the marshal module with a more or less hand-coded
version that is not able to do scary things if we get malformed messages.
It also makes what I think is a necessary change to the send/receive
semantics. The receive and send code are now supposed to send data in
the form of a string. That makes sense in my mind at least; the send
and receive code plays with a chunk of data with a program counter
attached and that's it. The rest is up to the sender or receiver - for
example, sendShare now makes a string out of its share and calls sendData.
Before releasing a patch, I want to make sure it does not ruin the
efficiency completely. I have more than a few ways to vary the code,
and the goal is to select the most efficient method.
|