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