opentechinstitute / commotiond

The system management daemon for the Commotion Wireless Project.
https://commotionwireless.net
GNU Affero General Public License v3.0
26 stars 21 forks source link

Add unsafe tree and list insert functions to commotiond and use where appropriate. #94

Closed jheretic closed 10 years ago

jheretic commented 10 years ago

Commotiond, for efficiency reasons, tries to avoid doing copies of data structures where possible. Therefore, the network responses to some commands are serialized directly out of the standing data structures where it stores, for instance, profile information. Unfortunately, a recent bugfix revealed that halloc is not behaving as expected, and so some of those standing data structures were getting deleted as responses were getting freed. This pull request adds unsafe versions of the tree and list insert functions, which are functionally identical other than that they don't attempt to hattach new objects to those data structures; memory management is left up to the programmer. These are now used within certain areas of daemon.c so that we can still free all response objects but still access the standing data structures with impunity without worry of freeing them by accident.

To test:

  1. Run commotion help and verify that the output is as expected.
  2. Run it a second time and verify that the 'help' output is identical.
  3. Repeat steps 1 and 2 for the 'get', 'profiles' and 'state' commands.