rob@76
|
1 TODO:
|
rob@76
|
2
|
rob@76
|
3 - consider adding the local endpoint name to PacketListener::PacketReceived() params
|
rob@76
|
4
|
rob@76
|
5 - consider adding ListenerThread class to support old seperate thread listener functionality, something like:
|
rob@76
|
6
|
rob@76
|
7 class UdpSocketListenerThread{
|
rob@76
|
8 public:
|
rob@76
|
9 UdpSocketListenerThread( UdpSocket& socket, Listener *listener );
|
rob@76
|
10 UdpSocketListenerThread( UdpSocketReceiveMultiplexer *mux );
|
rob@76
|
11 ~UdpSocketListenerThread();
|
rob@76
|
12
|
rob@76
|
13 void Run();
|
rob@76
|
14 void Stop();
|
rob@76
|
15 };
|
rob@76
|
16
|
rob@76
|
17 - work out a way to make the parsing classes totally safe. at a minimum this
|
rob@76
|
18 means adding functions to test for invalid float/doublevalues,
|
rob@76
|
19 making sure the iterators never pass the end of the message, ...
|
rob@76
|
20 (passing end of message can happen if:
|
rob@76
|
21 - too many args in type tags
|
rob@76
|
22 a. typetags overflow message size
|
rob@76
|
23 b. args fulfilling typetags overflow message size
|
rob@76
|
24 - strings too long or not terminated correctly
|
rob@76
|
25 - blobs too long or not terminated correctly
|
rob@76
|
26
|
rob@76
|
27 if the message was fully checked during construction, the end() iterator
|
rob@76
|
28 could be moved back until only arguments which fit withing size() may
|
rob@76
|
29 be interated (this could be none). A flag could be set to indicate that
|
rob@76
|
30 something was wrong.
|
rob@76
|
31
|
rob@76
|
32 - other packet badness could include:
|
rob@76
|
33 - time tags too far into the future (the scheduler should deal with
|
rob@76
|
34 that i guess).
|
rob@76
|
35 - message address patterns which aren't correctly terminated
|
rob@76
|
36
|
rob@76
|
37 - improve the ability to parse messages without tags (SC uses methods which
|
rob@76
|
38 get the data and advance the iterator in one step.)
|
rob@76
|
39 - Check* could be modified to do this - ie if typetags are not present
|
rob@76
|
40 it could check that reading the field won't escape the message size
|
rob@76
|
41 and return the data, or return false if some consistency
|
rob@76
|
42 constraint is violated.
|
rob@76
|
43 (or alternately drop support for messages without type tags)
|
rob@76
|
44
|
rob@76
|
45
|
rob@76
|
46 - add a method to discard an inprogress message if it gets half
|
rob@76
|
47 constructed and the buffer is full in OutboundPacket
|
rob@76
|
48
|
rob@76
|
49 - write a stress testing app which can send garbage packets to try to flush out other bugs in the parsing code.
|
rob@76
|
50
|
rob@76
|
51
|
rob@76
|
52
|