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
|