annotate trunk/external/oscpack/TODO @ 706:f8e90b5d85fd tip

Delete CARFAC code from this repository. It has been moved to https://github.com/google/carfac Please email me with your github username to get access. I've also created a new mailing list to discuss CARFAC development: https://groups.google.com/forum/#!forum/carfac-dev
author ronw@google.com
date Thu, 18 Jul 2013 20:56:51 +0000
parents 4b37b53105a3
children
rev   line source
tomwalters@570 1 TODO:
tomwalters@570 2
tomwalters@570 3 - consider adding the local endpoint name to PacketListener::PacketReceived() params
tomwalters@570 4
tomwalters@570 5 - consider adding ListenerThread class to support old seperate thread listener functionality, something like:
tomwalters@570 6
tomwalters@570 7 class UdpSocketListenerThread{
tomwalters@570 8 public:
tomwalters@570 9 UdpSocketListenerThread( UdpSocket& socket, Listener *listener );
tomwalters@570 10 UdpSocketListenerThread( UdpSocketReceiveMultiplexer *mux );
tomwalters@570 11 ~UdpSocketListenerThread();
tomwalters@570 12
tomwalters@570 13 void Run();
tomwalters@570 14 void Stop();
tomwalters@570 15 };
tomwalters@570 16
tomwalters@570 17 - provide some kind of automatic endianness configuration (hopefully there
tomwalters@570 18 are gcc symbols for this)
tomwalters@570 19
tomwalters@570 20 - work out a way to make the parsing classes totally safe. at a minimum this
tomwalters@570 21 means adding functions to test for invalid float/doublevalues,
tomwalters@570 22 making sure the iterators never pass the end of the message, ...
tomwalters@570 23 (passing end of message can happen if:
tomwalters@570 24 - too many args in type tags
tomwalters@570 25 a. typetags overflow message size
tomwalters@570 26 b. args fulfilling typetags overflow message size
tomwalters@570 27 - strings too long or not terminated correctly
tomwalters@570 28 - blobs too long or not terminated correctly
tomwalters@570 29
tomwalters@570 30 if the message was fully checked during construction, the end() iterator
tomwalters@570 31 could be moved back until only arguments which fit withing size() may
tomwalters@570 32 be interated (this could be none). A flag could be set to indicate that
tomwalters@570 33 something was wrong.
tomwalters@570 34
tomwalters@570 35 - other packet badness could include:
tomwalters@570 36 - time tags too far into the future (the scheduler should deal with
tomwalters@570 37 that i guess).
tomwalters@570 38 - message address patterns which aren't correctly terminated
tomwalters@570 39
tomwalters@570 40 - improve the ability to parse messages without tags (SC uses methods which
tomwalters@570 41 get the data and advance the iterator in one step.)
tomwalters@570 42 - Check* could be modified to do this - ie if typetags are not present
tomwalters@570 43 it could check that reading the field won't escape the message size
tomwalters@570 44 and return the data, or return false if some consistency
tomwalters@570 45 constraint is violated.
tomwalters@570 46 (or alternately drop support for messages without type tags)
tomwalters@570 47
tomwalters@570 48
tomwalters@570 49 - add a method to discard an inprogress message if it gets half
tomwalters@570 50 constructed and the buffer is full in OutboundPacket
tomwalters@570 51
tomwalters@570 52 - write a stress testing app which can send garbage packets to try to flush out other bugs in the parsing code.
tomwalters@570 53
tomwalters@570 54
tomwalters@570 55