SockHop Known Bugs
Yes, believe it or not, SockHop is not yet perfect. Here is the
current list of known problems:
-
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.
-
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.
-
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.
-
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!
-
The HTML docs are butt-ugly. ;^)
-
I've left some extra debug output in the code for now, just in case it
comes in handy when "debugging by proxy".
-
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).
-
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
-
More example code (including examples for SHDirectConnection,
SHSessionAcceptor, etc)
-
More testing (see above)
-
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.
-
Add methods to query the current state of a node (e.g. what children it
contains, and what components it is currently running)
-
Review the SHAccessPolicy class to increase
its usefulness.
-
Perhaps add a method to rename existing nodes
-
Add UDP and/or broadcast Ethernet SHSorters (as soon as BeOS supports this...
R5?)
-
Re-examine SockHop's security model. Right now it's kind of lame.
-
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!