On IRC, wanoskarnet notes that the microdesc_free() function requires that the microdescriptor not be held by any node_t , yet does not check it. He says this is a bug waiting to happen. I agree.
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Child items ...
Show closed items
Linked items 0
Link issues together to show that they're related.
Learn more.
I'm adding some flags to track microdesc addition and deletion from the nodelist, and also from the microdesc_map. There are two options for how microdesc_free() should handle these flags: It can either assert that everything freed has been removed, or it can remove stuff for us itself, and log that there was a bug.
I'm going with the second approach for now to try to make 0.2.3.x be less crashy. If these warnings show up, though, we will want to track them down.
Please review branch bug3153 in my public repository.
Wanoskarnet says on IRC that nothing actually calls nodelist_remove_microdesc, and nothing actually clears node->md during normal operation. Better look into that.
I think wanoskarnet is right here: right now, so long as a microdesc_t is held in a node_t, the microdesc should never actually get freed. That's fine. I'm okay with leaving that function in and unused for now.
Merging the sanity-test code above.
Trac: Status: needs_review to closed Resolution: N/Ato fixed