Ran into a situation where I was recieving an offer response without
something in protocol_offers. I think this was because
get_and_set_rate doesn't always populate that dictionary.
Worried that there still might be issues if the connection is
unreliable: if a response comes in twice it will error or
if a second offer is made without a response to the first
there will be an error.
Each blob requests has three parts
- A request to see what blobs are available
- A request to download and pay for one of those blobs
- A request to negotiate data costs
Before the refactoring all of the code to accomplish this was mixed into
one class. They are now three seperate classes.
There is still a lot of room for improvement, but it is at least better than
it was.
If an invalid stream descriptor hash is entered, abort and
give a useful error.
If a name doesn't resolve, abort and give a useful error.
If a name resolves to something invalid, abort and give a useful error.