root/common/trunk/MODS @ 475

Revision 475, 13.2 KB (checked in by ucacoxh, 14 years ago)

- Make waiting_ack->next null when putting message on ack list, otherwise

flush messages can attempt to delete the same message twice.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1Common Code Library: Modification history
2
3v1.0.0  - Initial version, based on RAT v3.2.7
4        * 14 November 1998
5
6v1.0.1  - Added HMAC authentication code
7        - Added timeout to udp_recv()
8        - Added authentication of Mbus messages
9        - Added RTP library
10        - Added select and fd_set functions to net_udp.[ch]
11        - IPv6 code now runs on the pre-release stack for Solaris 2.7
12        - Mbus code support a configuration file on Unix, and the registry
13          on Win32, to save/restore settings
14        - Add udp_host_addr() to get a text-version of the address to which
15          a socket is bound.
16        - Set IPv6 ttl and loopback state correctly on Solaris
17        - Move mbus hearbeat code into this library
18        - Remove key expiry from the mbus code, since it created race
19          conditions when multiple tools for a single conference were
20          started either side of the expiry time.
21        - Update mbus addressing scheme - names are now sets of tokens, if the
22          set of tokens in the destination address is a subset of the address
23          of the entity receiving that message then the message is accepted. An
24          empty set is a valid destination address for a message, and that will
25          be accepted by all receivers (ie: a wildcard).
26        - Remove channel ID from mbus code.
27        - Fix configure script to work with solaris 2.7 where inet_aton() and
28          inet_pton() have prototypes but no implementation.
29        * 31 March 1999 [rat v4.0.0]
30
31v1.0.2  - Assorted fixes to RTP library
32        - Fix bounds overruns in memory.c - will now run with -DDEBUG_MEM
33          with the bounds checker on.
34        - Add timestamp to mbus packet headers.
35        - Add mbus_qmsgf()
36        - Cleanup mbus transmission path
37        - Add support for DES encryption to the mbus (on by default)
38        - Fix DES code
39        - Mbus keeps a cache of other entities, and only allows sending of
40          reliable messages to known unicast addresses.
41        - Mbus error function now takes a "type of error" argument
42        - Added xrealloc()
43        - Fix reordering of mbus messages
44        * 14 May 1999 [rat v4.0.1]
45
46v1.0.3  - Fix inet_aton() in net_udp.c
47        * 15 May 1999 [rat v4.0.2]
48
49v1.0.4  - Fix compilation with Microsoft IPv6 stack
50        - Solaris 2.5.1 doesn't have vsnprintf(), use vsprintf() instead
51          and don't worry about the possible buffer overflow problems.
52          Reported by Holger Wirtz.
53        - Added mbus_addr_valid()
54        - Added timeout to mbus_recv()
55        - Fixes to mbus code from Dirk Kutscher
56        * 2 June 1999 [rat v4.0.3]
57
58v1.0.5  - Not quite sure what happened with this version, but if you have
59          it it's probably not a good idea to use it! :-)
60
61v1.0.6  - Add ability to send to one port whilst receiving on another,
62          requested by Henning Schulzrinne.
63        - Add mbus_cmd_handler() to change the function handling the
64          reception of mbus commands.
65        - Compilation fixes for Irix 6.5 contributed by Bob Olson.
66        - Add extra sanity checking to mbus_recv()
67        - Add extra sanity checking to mbus_parse_*
68        - Fix source address passed to mbus_recv() callback - was missing
69          the "(" and ")" around it.
70        - Fix memory leak in mbus_recv()
71        - Fixes for configure script on 64 bit IRIX from Peter Orbaek
72        - Move base64 tests into test_base64.c and integrate with the test suite
73        * Released 5 July 1999
74
75v1.0.7  - Add udp_exit to close sockets and leave multicast groups if necessary.
76        - Fix mbus_exit close sockets.
77        - Move the code to deal with the mbus configuration into mbus_config.c
78          which will make it easier to write an mbus packet logger without code
79          duplication (such a logger can't easily be part of mbus.c, since it's
80          needs conflict with correct protocol operation).
81        - Note that v1.3 of the Microsoft Research IPv6 stack requires an explicit
82          route to be added for multicast traffic before a group can be joined. If
83          you get errors in the IPV6_ADD_MEMBERSHIP setsockopt, this is probably
84          the reason. We could specify an interface explicitly, but which one to
85          pick?
86        - Updates to the IPv6 code for the Detexis Musica IPv6 stack
87        - Updates to the RTP code from Markus Germeier: time-out and delete sources,
88          fix X but in RTP header, add support for sending BYE packets.
89        - Add inet_pton() and inet_ntop() implementations, for those platforms
90          which are missing them.
91        - Add gettimeofday() workaround for win32
92        - Add drand48() workaround for win32
93        * Released 20 August 1999
94
95v1.0.8  - Add mbus_sent_all()
96        - Add loop count to mbus_recv(), so it will always return after 10
97          packets have been received. The prevents a denial of service attack
98          if packets are sent faster than the timeout period.
99        - Add binary tree.
100        - Add OpenBSD fixes from Angelos D. Keromytis
101        - Add Jerry Isdale's debug_dump() routine.
102        - Add fix to RTP init_seq() to correct bug(?) in RFC1889 which
103          means we incorrectly report the one packet lost in the first
104          reporting interval. Fix by Bill Fenner.
105        - Make the RTP create_source() routine return a pointer to the
106          source. Patch from Bill Fenner.
107        - Changes to the probation code in rtp.c from Bill Fenner.
108        - Fix types in the RTP source struct.
109        - Add a SOURCE_CREATED event to the RTP callback.
110        - Add option to accept RTP packets before a corresponding RTCP
111          packet has been received.
112        - Add RX_RR_EMPTY event to the RTP code, to indicate that an empty
113          reception report (ie: no report blocks) has been received.
114        - Add RX_RTCP_START and RX_RTCP_FINISH events to the RTP code.
115        - debug_msg() now displays the pid
116        - The mbus code now maintains the list of active sources more correctly,
117          making mbus_addr_valid() useful
118        - rtp_init() now takes separate rx_port and tx_port, instead of a
119          single port for both sending and receiving.
120        - Add rtp_get_addr(), rtp_get_rx_port(), rtp_get_tx_port() and rtp_get_ttl()
121        - Change return type of rtp_recv to int (was void).  Returns TRUE if
122          packets were processed, FALSE otherwise.
123        - Timeout RRs from the RTP database, if they're not refreshed for
124          3 times the RTCP reporting interval
125        - rtp_update() only expires sources once per reporting interval, to
126          avoid burning too many cycles.
127        - Mbus updates contributed by Markus Germeier
128                - we now can configure the multicast address and port which the
129                  mbus should use in ~/.mbus
130                - honor the SCOPE setting in ~/.mbus
131                - expire sources we haven't heard from for a while
132                - fixes small memory leak in remove_other_addr
133                - mbus_exit now sends a mbus.quit and cleans up other_* structures
134        - RTP updates contributed by Timur Friedman.
135                - Add support for RTCP APP packets
136                - Add support for a promiscuous mode to the RTP code, when in
137                  promiscuous mode there is no wait for a minimum number of RTP
138                  packets before recognizing a source.
139                - Add the functions rtp_setopt() and rtp_getopt() that can be used
140                  to control various options (right now just promiscuous mode).
141                - Split rtp_recv_data() into two functions.
142        * 5 October 1999
143
144v1.0.9  - Ignore ECONNREFUSED in net_udp.c
145        - Add mbus_rendezvous_waiting() and mbus_rendezvous_go() to enable
146          easy rendezvous between multiple processes.
147        - Change rtp_setopt() and rtp_getopt() to take boolean options only.
148        - Remove rtp_weak_validation(), use rtp_setopt(RTP_OPT_WEAK_VALIDATION)
149          instead.
150        - Delete RTP database entries which haven't been heard from for
151          more than 5 times the RTCP reporting interval.
152        * 2 November 1999 [rat v4.1.1]
153
154v1.0.10 - Mbus updates from Markus Germeier, which fix compatibility with
155          the Uni Bremen implementation:
156                - mbus.bye() signals an entity when it leaves. (mbus.quit commands
157                  an entity to leave)
158                - Generate and work with 64 bit DES keys. Generate parity bits for key.
159                  Check if key in configuration file sets parity bits correctly.
160                - mbus_heartbeat(m, 1) should send an mbus.hello() every second and
161                  not every two seconds
162                - HMAC-MD5 should read HMAC-MD5-96
163                - Honor the MBUS environment variable for the MBUS configuration file
164                - The TZI Mbus implementations generate spaces in configuration file,
165                  which mislead the UCL Mbus to dump core. Allow Spaces in .mbus
166                - Address must be unique
167                - Delete failed reliable messages if err_handler is present
168        - Fix uninitialized use of session->last_update in RTP code
169        - Fix assertion failures in RTP library when sending RTCP packets
170        - Recognize, but ignore, profile specific extensions to RTCP SR/RR packets
171        - Update RTCP reporting interval calculation
172        - Implement reverse reconsideration of RTCP reporting interval
173        - Fix tv_diff in rtp.c to handle negative results
174        - Remove rtp_get_encryption_key(), the user of the library is assumed to
175          remember the passphrase used and doesn't need access to the internal
176          form of the key.
177        - GNU autoconf modifications from Bill Fenner
178        - Global change of integer types, and removal of compatibility defines:
179                u_int8  -> u_int8_t
180                u_int16 -> u_int16_t
181                u_int32 -> u_int32_t
182          and the same for the signed varients.
183        - Implement encryption in the RTP code
184        - Ignore connection refused errors in IPv4 UDP send.
185        - Hide definition of struct mbus_config
186        - Add a version number to the mbus config file
187        - Fixes for FreeBSD v3.2 with INRIA IPv6 stack from Fred Templin
188        - Add configure check for sin6_len in struct sockaddr_in6 (seems
189          that FreeBSD has this, but many systems don't)
190        - Fix batching of multiple mbus messages into one packet.
191        * 13 December 1999 [rat v4.1.2]
192
193v1.1.0  - Changed autoconf generated header to uclconf.h.
194        - Changed library name to uclmmbase to be consistent with other libs.   
195        - Add RTP_OPT_FILTER_MY_PACKETS
196        - Cleanup test routines
197        - Fix various potential buffer overflow problems
198        - Update copyright notices to welcome in the new millennium
199        - Previous versions of udp_send() would sometimes return -1 on error,
200          and would sometimes abort(). We now always return -1 and never abort.
201        - Add test routines for code in net_udp.c
202        - Fix SCOPE parameter in mbus configuration on windows
203        - Fix sending of hearbeat messages whilst in mbus.waiting() and mbus.go() loops
204        - Tidy up mbus_qmsg();
205        - Add workaround for buffer overflow bug in _dprintf() which caused
206          a crash under Windows NT service pack 6. This is not a real fix, we
207          need to use vsnprintf() in there, but Windows doesn't implement it
208          and I don't have time before we give the demo... Sigh, only two
209          days wasted.
210        - Fix buffer overflow in _dprintf() on Windows, using _vsnprintf().
211        - Update IPv6 support for Microsoft Research IPv6 stack, v1.4
212                - Use the versions of inet_ntop() and inet_pton() provided with the
213                  IPv6 stack, but retain our own implementation when building with
214                  IPv4 support only.
215                - Use getaddrinfo() rather than getnodebyname() to get our IPv6 address if
216                  running with the Microsoft Research IPv6 stack.
217                - We now require getaddrinfo() to be present in all IPv6 stacks: those which
218                  do not have this call (eg: the Musica IPv6 stack) MUST provide a workaround
219                  implementation.
220          versions of MSR IPv6 prior to 1.4 are no longer supported.
221        - Update IPv6 support for Red Hat Linux 6.1
222        - Fix generation of version.h on Win32
223        - Add VC++ project file to build the test suite under Win32
224        - Add extra debug code to the mbus library
225        - Rewrite mbus code: mbus_parser.[ch] exist now, and include routines moved from the
226          main mbus.[ch] files. Note that the interface to the mbus_parse_*() functions has
227          now changed and is not backwards compatible.
228        - Remove the mbus_addr() function, add an extra parameter to mbus_init() instead.
229        * 28 January 2000
230
231v1.1.1  - Add extra debugging code
232        * 1 February 2000
233
234v1.1.2  - Add routines for handling NTP format timestamps, in ntp.[ch]
235        - Add udp_addr_valid.
236        - Fix cname setup for Win32.
237        - Add udp_init_if() call, to open a UDP/IP socket bound to a
238          specific interface
239        - Add rtp_init_if() call, to open an RTP socket bound to a
240          specific interface
241        - Add asarray.[ch] string holding associative array.
242        - Fix compilation with -Wwrite-strings and -Wcast-align
243        - Split mbus_addr_match() and mbus_add_identical() into mbus_addr.[ch]
244        * 14 February 2000
245
246v1.1.3  - Fix debug_set_core_dir() when not debugging.
247        * 14 February 2000
248
249v1.1.4  - Add tests for mbus_parser.c/mbus_addr.c and fix bugs found
250        - Fix use of free()'d memory in mbus.c
251        * 24 February 2000
252
253v1.1.5  - Remove SunOS and Solaris defines from the configure script, they
254          shouldn't be necessary any longer.
255        - Add workaround for missing getaddrinfo() on some platforms.
256        - Remove most of the abort() statements from udp_init(), we now
257          return NULL in most cases of an error.
258        - Fix header extension handling when padding bit set for RTP packets.
259        - Change RTP event type #defines into rtp_event_type so compiler can
260          check all cases are covered in decision blocks.
261        - Fix waiting_ack next is set to null when message is put on ack list.
262
263Still to do...
264        - IPv6 code sometimes doesn't get the correct interface address,
265          since it does a gethostbyname() and looks that up, yet that can
266          return the IPv4 hostname only on some machines.
267        - Doesn't do DNS AAAA lookups when given a name rather than an IP address.
268        - Mbus code should check timestamp in received headers, and discard
269          messages if it decreases, as a hinderance to replay attacks.
270        - Mbus code should be more paranoid about handling garbage inputs, we
271          can likely get all sorts of buffer overflows by feeding random data
272          into it.
273        - rtp_recv should split into rtp_select and rtp_recv. Jitter issues
274          otherwise, as pointed out by Orion.
275        - Allow a callback for background processing during mbus_rendezvous_*()
276        - mbus_exit() queues an mbus.bye() message, but that never gets sent.
277        - Handling of SSRC collisions is broken.
278
Note: See TracBrowser for help on using the browser.