SockHop Known Bugs

Yes, believe it or not, SockHop is not yet perfect.  Here is the current list of known problems:

  1. On the PPC version, some of the shutdown synchronization code was crashing and so I disabled it.  This means shutdown might not work always correctly on PPC.
  2. Needs more testing and bullet-proofing, on PC and especially on PPC.  Memory leaks and race conditions especially should be searched for under a variety of conditions.
  3. The SH_PARAMNAME_DEBUG option doesn't completely control debug output.  That is, classes that aren't necessarily associated with a node will always give debug output, even when debug output has been disabled for that node.
  4. The security features (SHAccessPolicy, etc) are very basic measures that won't stop a determined attacker.  If you are very concerned about security, don't let them lull you into thinking that SockHop isn't a potential security hole!
  5. The HTML docs are butt-ugly.   ;^)
  6. I've left some extra debug output in the code for now, just in case it comes in handy when "debugging by proxy".
  7. The current Symlink API gives no way to choose a name for the symlink (names the link the same as the link target), and thus there is no way to link to the root node (because the symlink would be named "/", which is not a legal node name for any node other than the actual root node).
  8. SockHop won't work across firewalls, unless you punch holes in them to allow incoming and outgoing TCP connections.  (SockHop needs to be able to create TCP connections going both ways)
If you run across any problems that aren't on this list (or even if they are on the list, but they really annoy you) please email me!  I'm much better at fixing bugs once I know that they exist!

To Do List

  1. More example code (including examples for SHDirectConnection, SHSessionAcceptor, etc)
  2. More testing (see above)
  3. Allow the SH_NAME_SYMLINKS field to take BMessages and SHNodeSpecs as well as strings.  BMessages would be useful for when you wish to link to nodes based on custom routing criteria, SHNodeSpecs would be useful for when you wish to link to existing nodes in other SockHop node trees.  Also add a way to specify a name for the symlinks other than the target node's name.
  4. Add methods to query the current state of a node (e.g. what children it contains, and what components it is currently running)
  5. Review the SHAccessPolicy class to increase its usefulness.
  6. Perhaps add a method to rename existing nodes
  7. Add UDP and/or broadcast Ethernet SHSorters (as soon as BeOS supports this... R5?)
  8. Re-examine SockHop's security model.  Right now it's kind of lame.
  9. Make better use of BHandlers.  Right now, BHandlers aren't used for anything--BLooper::MessageReceived() handles everything, and BList lookups are used to demultiplex messages, based on fields in the BMessage.  Inefficient!