Sdr changes log

3.0 K.Hasler/E.Whelan 22 Aug 2000
  - new 'application' media type for session directories
  - fixed byte ordering of headers on intel machines
  - fixed IP6 address allocation for unix IP6 stacks
  - Authentication and encryption code fixed to allow for extra space
    for IPv6 addresses
  - Added IPv6 flags to configure scripts "--enable-ipv6"

3.0 K.Hasler 6 Dec 1999
  - changed use of option get to use the resource procs in generic.tcl
  - store_address now returns if it already has the address.

3.0 C.Perkins 16 Nov 1999
  - Remove TTL scoping option

2.9 K.Hasler 26 Oct 1999
  - created a directory type for the directory icon, so that the directory icon 
    is displayed for directory sessions in the main SDR window.
  - Fix reshow_sessions to delete sessbox when they exist - fixes problem when
    using the Apply button from the preferences window.

2.9 E.Whelan 25 Oct 1999
  - fixed window problems caused by adding directories - fixes problems
    with passphrase window.
  - eg geometry option and key passphrase window at startup
  - FAQ has also been updated 
  - Fixed problem which quit from SDR when closed directory windows

2.8 K.Hasler 9 Sep 1999
  - fixdaysinmonth proc fixes daysinmonth variable for leap years.  Used 
    when creating a new session and in calendar.
  - Fix convert_vars to recognise other variable separators (ie not just /).
  - Fixed set_fmt_menu in create_proc_menu which had attributes in wrong order.
  - Directory SDP Patches from:

2.7e K.Hasler 15 July 1999
  - enabled pgp

2.7 K.Hasler 15 July 1999
  - Removed calls to splat_tcl_characters, since we're not eval'ing the 
    parameters anymore.
  - Fixed sip code, so we don't eval the packet buffer.
  - Fixed run_program to work on Windows
  - Removed eval $rule in plugins and replaced with convert_vars in 
    sd_listen (called from run_program).

2.6.3 K.Hasler 25 June 1999
  - removed []$ characters in sip_recv_udp and recv_packets 

2.6.2 K.Hasler 22 June 1999
  - enlarged some fonts on windows
  - fixed security bug - removed []$ characters before parsing sip 

2.6.2 E.Whelan 21 June 1999

  - Added pgpdisable and x509disable variables so can build sdr so it 
    disables all PGP and X509 code for a stable release and can enable
    the code for an experimental release

2.6.2 C.Perkins 1999
  - Remove qfDES code. We now link with the UCL common multimedia library
    instead, which had a debugged version of this. You MUST have the package
    "common" from our CVS server (or from our web-site) to build sdr now.
  - Add Visual C++ 6.0 project files to allow easy compilation on windows.
  - Rename plugins to remove the "*" so that CVS can work with them on
  - Strip trailing CR from domain name on Solaris when reading from
    /etc/resolv.conf; this solves the "can't advertise session" problem.
  - Revert the rat plugin to that from sdr-2.4a7, which is suitable for
    rat-3.0.x. We'll distribute later plugins with rat separately, since
    trying to merge them into sdr will only cause confusion for users of
    the old rat, who can't access any of the new features the plugin 

2.6.1 30 Mar 1999
  - solaris/irix/windows release

  - Tightened up SDP parser to catch more errors
  - Handle compressed SAP, either compressed via gzip (as the SAP spec says)
    or via zlib (as Real G2 does).  This should be clarified in the SAP spec,
    as should the combination of compression and authentication.  To handle
    compressed SAP, you need zlib (,
    -DHAVE_ZLIB in CFLAGS, and -lz in LIBS.  See freebsd/Makefile.freebsd
    (since FreeBSD ships with zlib).

2.6.0 25 Feb 1999

  - added test on PGPSTATE environment variable. To use PGP you must set
    PGPSTATE = 1

2.6.0 22 Jan 1999

  - changed a lot of the PGP authentication, PGP encryption and 
    DES ecryption code     
  - the X.509 code hasn't been looked at yet and the option of 
    using it has been temporarily disabled


2.5.8 Released 9 October 1998
  - Unix version now uses Tcl/Tk from our CVS. This is Tcl/Tk 8.0.3 modified
    to remove all the path searching and include the initialisation files in
    the binary. Should solve the numerous problems with Tcl which people have
    reported (it works for rat and nte, why not sdr too?)
  - Fix font sizes in the calendar (was hardcoded pixel sizes, now measures
    the font to get the correct value).
  - Assorted fixes to authentication code
  - Many many changes to remove space leaks and memory corruption problems,
  - Add workaround for Irix bug where timezone sometimes contains an
    unmatched quote.
  - Fix SIP From URL in ACK and BYE requests.

2.5.7 Released 24 September 1998
  - Fix compilation on FreeBSD
  - Fix session creation in cases where you have a plugin but no tools for
    the media
  - Remove T/TCP code from sip_common.c (patch from Bill Fenner)

2.5.6 Released 18 September 1998
  - Many bug fixes...
  - Fixes for Irix 6.3 from Michael Kaschel (
  - Rewrite of the new session UI (wizard style interface)
  - Change order of scope zone initialisation

2.5a5 5th August 1998
  - changed version number to 2.5a5 in preparation for the release

2.5a4  31st July 1998
  - added lots of changes to implement PGP and X.509 authentication
    and encryption

2.5a4  29th July 1998

  - added code so that the media tools can be started encrypted 

  - modified so that a privacy header is used in the case of symmetric 
  - increased version number as old version with no header will not

2.5a3, 1998/04/21
  Fixed SIP bug when inviting to public sessions
  Fixed SIP URL syntax
  Increased version number as SIP will no longer interoperate with 2.5a2


  mjh, 26th Mar 98
- fix address book

- fix SIP code so that when a SIP announcement arrives followed by a
  SAP announcement for the same session, the right thing happens.

- replace sd_addr with sap_addr and sd_port with sap_port to make it
  more obvious what these variables do.


- Fix SIP for encrypting sdr 


- Rename 'nt' to 'nte'

2.4a8 E.Whelan 4th Feb 98

- changed code to remove the symmetric encryption keyid

2.4a8 mjh 28th Jan 98

- changed address field in announcements to be FQDN as per new SDP spec.

- added lots of code to try hard to get the FQDN, even when the machine is
  not well configured.

- fixed longstanding bug where email and phone fields are switched in 

2.4a8 January 98 E. Whelan

- Added lots of code for symmetric encryption of the announcements

fenner 20th Jan 98

- I had previously sent you some code to handle duration > interval,
  e.g. "active every week for 2 weeks".  I noticed today a session that
  was "active every 2 days for 2 days", which could use the same fix.

2.4a7 mjh

- fixed calendar bug that caused daily times to be not shown for sessions
  during November and December.  Also fixed year 2000 bug in calendar code.

2.4a6 mhandley

  many changes to start to bring sdr SIP implementation in line with the
  soon-to-be-releases spec.

- minor bug fixes
- fixed problem with multiple repeats only showing the first

- some restructuring to clean up record_session

- user hook added for adding debug code or user extensions via sdr.tcl.

2.4a5 mhandley

- new highlighting of sessions caused errors when the session timed
  out with the session disply window visible.  Now fixed.

2.4a4 mhandley 9 May 1997

- fixed plugin parser so new plugins for an existing tool properly override
  old ones.

- disabled middle button paste in sdr main window.

- added scrollbar to tool preferences.

- added bindings to main window icons so they behave the same as the text

2.4a3 mhandley 8 May 1997

- added code to handle SIP redirects from a sip_server

- bug in handling sip failure responses fixed.

- minor structuring to permit some common code between a sip_server and sdr.

- added code so sdr can register its user with a sip_server on startup
  using HTTP POST (Content-type: application/x-sip-loc).  This will allow
  a simple dynamic directory to be maintained, perferably one instance
  per site,  but other arrangements are also possible.

- first pass at sip_server.

- fixed some minor bugs in the keyboard-beep code that is used when
  sdr is being called.

- added a "While you were out" window that lists calls that were unanswered.

- added check on SAP version number so sdr rejects announcements with version
  greater than 1 in preparation for potential SAP changes.

- added code to trim URL strings if the won't fit in the status line of the
  web browser when you put the pointer over the a hot string instead of 
  letting tk resize the browser to fit the string.

- added a filter so you can hide Test sessions in the main sdr window.

- re-wrote the main session listing code to use a Tk text widget
  rather than a listbox to allow colours, multiple fonts and images in
  the listing.  

- Added code to display the session type as an icon in the session listing 
  and to disable this from the preferences if desired.

- Added code to display future sessions as greyed out in the session listing.

- Added code that allows the sessions to be sorted primarily on
  session type, or alphabetically depending on user preference.

- Added code to session startup to prevent sdr needing to query the
  user whether to use an old rule for a tool or a new plugin that
  overrides the old rule.

2.4a2 mhandley 29 Apr 1997

- fixed bugs in SIP code that meant a lost response to a call wasn't
  resent properly.

- fixed bug that meant quiting after initiating a SIP session caused an
  error when saving the cache.

2.4a1 mhandley 28 Apr 1997

- added code to allow a SIP alias to be used in addition to the username. 28 Apr 1997

- string compares replace "!=" in new.tcl to avoid problems with numeric 
  ad ids.

- lappend used in place of simple string concatenation in sdr.tcl to
  avoid problems with tcl getting confused with "{" in a string.  

- make the calendar keep track of ending year; I saw a session which
  ended in 366 days (or something) so the end time on the 2nd day was
  displayed incorrectly.

- Keep a 20-page memory cache of web pages

- Add "reload" which ignores memory cache and causes proxy cache to reload too

- Use resources for font names instead of hardcoded values

- Size the window with "prefont" so it's the right width.  Unfortunately
  this sometimes makes stuff that's supposed to be normal in the prefont.

- Make multiple forms on the same page work by making the widget path
  depend on the form number

- Use T/TCP if available for web requests

- Extend knowledge of Solaris bugs in www_fns.c

- Handle reload requests

2.4a0 mhandley 28 Apr 1997

- added a simple address book for SIP calls.  Functionality will be
  expanded in due course.

- re-wrote SIP code to use SIP v2.0 rather than the old SIP v1.0:
  current status:
   only UDP implemented
   doesn't handle redirection
   doesn't handle negotiation
   absolutely minimal functionality to be able to make and receive calls

- fixed longstanding bug where saving preferences could fail if ~/.sdr
  didn't exist.

2.3a3 mhandley

- complete re-write of session listing display code to make it much
  more generic and (hopefully) more robust.

- bug fixed where encryption key variable wasn't being initialised,
  so it was possible for sdr to put sessions in the private window
  when they should have been public.  (thanks to Bill Fenner)

- modifications so that sdr accepts SAP announcements with CRLF
  separating lines rather than just LF.  Note LF is the standard, CRLF
  is acceptable but not advised.

2.3a2 mhandley

- changes made so encryption is removable for export from US.

- memory leak in send_advert fixed (thanks to Bill Fenner).

- fixes added to sd_listen.c to prevent possible core dumps when a
  session is received with missing compulsory fields.

2.3a0 8 Oct 1996 mhandley

- encryption added:
   new cache directory added
   new SAP packet format adopted
   new UI code to separate encrypted and plain text sessions
   new preferences to specify encryption groups
   new code to store encryption group keys and other config data
   QFDES code from Saleem Bhatti et al included
   many other small changes related to encryption

- bugs in calendar fixed
   repeat sessions that repeat more than 3 months were treated incorrectly

- new session interface
   can no long create sessions that repeat for time x every y seconds
   where x > y/2.

- more label changes as a result of study by Louise Clark.
  "Detailed Time" button is no more - details are shown by default.

- sdr now does also attempt to read plugins from /usr/local/etc/sdr/plugins
  and a startup file from /usr/local/etc/sdr/sdr.tcl, in addition to
  those in ~/.sdr (or ~/sdr on Windows)

2.2a23 25 Sept 1996

- bug in the order of initialisation of Xresources was causing plugins
  to be read from the wrong place.  

- Two-way call disabled in Quick Call window pending being fixed properly.

2.2a22 9 Sept 96

- dumb state initialisation bug that carried email/phone state forward
  from one session to the next fixed.

- extra bindings added to work around tk bug in listbox scrolling in the 
  sdr main window (was possible to scroll sideways even though there was a
  binding to forbid it).

- many label changed as a result of a usage study by Louise Clark, and
  extra help labels added to preferences and calendar for beginners.

- string comparisons replace "normal" comparisons in reshow_sessions
  to avoid unwanted type conversions which were causing very occasional 

2.2a21 13 August 1996

- code added to store the PID of media tools and to produce a warning
  (on UNIX only) if the address or port is changed in a session where
  we already have media tools running.  

  This will not work (but should fail silent) on systems other than
  SunOS and Linux which have a BSD "ps" as it will default to doing "ps
  -p <id>" unless someone adds them to the relevant switch statement in
  media_changed_warning in sdr.tcl

- editing bug fixed: sdr is now smarter about when it really needs to
  reallocate multicast addresses when you switch between TTL scope and
  Admin scope in the technical interface.

- deleted session popups are now (again) removed when you hit delete.

2.2a20 12 August 1996,,

- admin scope editing bug on the "normal" interface fixed - default
  local scope was incorrectly getting asserted.  bug reported by
  George Michaelson.

- admin scope scope bug fixed - command bindings were slightly incorrect
  due to previously missed tk3.6/tk4 inconsistency, but had til now been
  masked by another bug.

- code added to see if we really need to re-allocate addresses when the admin
  scope is changed so that pseudo-scopes like site,region,world don't need
  to change addresses when we change between them, but really admin scopes

- minor patches to build sdr on NT 4.0b2

- repeat time handling was botched by changing starttime if it was
  earlier than today, repeat times were then calculated from right now
  as opposed to the original start.  Although I can't explain why, this
  caused sessions with repeats to show up on every single day of the

- if a session had multiple repeats in the same day, the second line
  would not highlight or bring up the session window

- if a session had multiple repeats in the same day, there would be
  empty space at the bottom of the calendar detail box.

- the list of bookings would not be sorted by name because it got
  sorted by aid.  removal of the sort by aid allowed it to fall back
  to the naturally sorted order of $fullix().

2.2a19 4 August 1996

- Old bug in determining when to allocate new addresses/ports and when
  not to because we're editing an exising session fixed yet again.

2.2a18 1 August 1996

- calendar TCL bug fixed - thought I got all these last year, but no...

2.2a17 30 July 96

- plugin mechanism extended to provide prototype support for 
  audio redundancy and for dynamic payload types.

2.2a16 3 July 96

- Plugin mechanism extended to allow attributes to be specified to be
  set by default for particular formats.

- Vat plugin modified to set ptime:40 attribute by default when session
  is announced.

- Code to work around pre-tk4.1 text widget line wrap bug removed from
  session creation interface (was causing session editing problems).

- Improved the SDP repeat time code:
   - improved (but still incomplete) offset handling
   - added parser for unit specification characters "d","h","m" and "s".

- Change args to ui_init to cope with changed behaviour of Tk_ParseArgv
  which now re-writes the argument list.

- SIP session creation fixed to remove spurious "0" attribute.

- Broken SIP receive code fixed - incorrect parameters were given to bind
  when CANT_MCAST_BIND was ommitted.

- Cancel button added to "Start Tool" popup.

- Calendar arrows were incorrect with multiple repeats per day and the
  last of them terminating on the next day.

- Modified cache entries to store whether or not an annoucement is 
  trusted so that spoof announcements claiming you were the originator 
  don't get re-announced but do get displayed (previous fix just 
  ignored them).

9 July 96

- added extra checks to exit cleanly if we can't find our own hostname
  or address.

9 July 96

- In the process of converting sdr from using the xrand48 routines to
  'random()', I introduced a serious bug in the announcement logic.  The
  symptom is that the first two announcements are made then no more.
  The reason is that drand48 returns a double on [0..1) and random
  returns a u_int on [0..2^32) so the first randomized interval in
  timed_send_advert is huge.

- I noticed that if someone sends an announcement claiming you are the
  originator then you quit & restart sdr, you will obligingly originate
  the announcement.  I changed the receive packet handler so that it
  ignores announcements from someone else if we are the original source.

- I also added a 'sdr_delete_session_hook' to sdr.tcl (analogous to
  sdr_new_session_hook) so I could make a ~/.sdr/sdr.tcl to log when
  sessions are created & deleted (seems like an easier way to debug than
  the commented out 'puts' lines in the original).

2.2a15 3 July 96

- Make a sip error message not look weird by not mixing printf() and
  perror() (just change it to fprintf(stderr,)

- Make announce_error() call tkerror with only one argument and
  print the actual error to stderr instead of the return from tkerror,
  and also use strncpy to not overrun statically sized buffer

- Make sdr automatically move ~/.sdr.tcl and ~/.sdr_prefs to their new
  locations, and announce that it has done so

- Get rid of an unneeded catch in sdr.tcl

-  Clicking on new media would not assign them port numbers, and
  switching back and forth between TTL and Admin scoping would produce
  ... strange results (the first time you clicked back on Admin scope,
  you would still get ttl scoped addresses)

- I also made generate_address default to instead of, so that the "admin scoped ttl" and the raw TTL addresses

2.2a14 2 July 96

- Radically updated the web stuff to fix its history mechanism; Now
  there's one entry point to display the current point in history,
  and another entry point to add a new page to the history and make it
  current and call the other routine, so that you can't display a page
  that you don't have history for.

- Modified sd_listen.c to copy stuff into heardfrom and origsrc no
  matter what.

- Most of the other changes have to do with the new style of keeping
  the fullindex sorted.

2.2a13 5,15 June 96 mhandley
- Fixed bug in 2.2a11 preference applying after a new session arrives
  when the preferences window is up.
- Session-type attribute and user interface code added  along with icon 
  to display session type in popup window.
- Makefile and ui_init.c changed to allow separate compilation of tcl
  files for ease of development (reversing one of Van's changes).
- General session attribute handing code added.
- Intenal attribute list format changed to be newline separated to cope
  with spaces in SDP attributes.
- "tool" session attribute added to session announcements to aid debugging
  when other session directory tools become more common.
2.2a12 11 Jun 96

- Several ifdef's & changes to support building under Win95/WinNT.
  The Windows implementation is complete & fully functional except:
    - sip support is disabled
    - the conference bus is disabled (it would be a nop under windows

- Moved all config files into ~/.sdr (~/sdr under Windows) directory.
  Name of this directory can now be set with Sdr.sdrHome X resource.
  Changed filenames are:
    ~/.sdr_prefs   -> ~/.sdr/prefs
    ~/.sdr.tcl     -> ~/.sdr/sdr.tcl
    ~/.sdr.<lang>  -> ~/.sdr/<lang>

- under windows, use the right button (which tk calls `button 3') for
  the 'immediate start' funtion since there is no button 2.

- replaced rand48 calls with random calls, using the random.c from
  the vic/vat distribution.  This is faster, more portable & more
  random than rand48.

- converted to release version tcl7.5/tk4.1.  Set up makefiles to
  generate lib.tcl from installed tcl/tk library files rather than
  using handbuilt lib.tcl that might be from incompatible tcl version.

- since winsock i/o works via callbacks rather than 'select', replaced
  calls to Tcl_CreateFileHandler() with calls to linksocket() (in new
  module iohander.c).  linksocket will take care of getting the winsock
  callbacks under win95/nt & will call Tcl_CreateFileHandler under unix.

- since you can get socket callbacks at any time (e.g., while other
  tcl code is being executed), most Tcl_Eval() calls needed to be
  Tcl_GlobalEval() calls to make sure they executed in the correct

- since winsock callbacks can arrive as soon as the handler is declared,
  need to create enough of the GUI to deal with callbacks *before*
  linking sockets otherwise we'll randomly crash during startup.

- tried to use new tcl7.5 clock facilities rather than localtime/strftime
  since the latter may not work on all systems that run tcl/tk
  (e.g., the Mac).  Changed C routine gettime to tcl routines gettime
  and gettimenow.  Changed '%e' in time format with %d since Microsoft
  (and Posix) don't support %e.

- got rid of 'please wait' popups when running under Windows (popup
  windows are *way* to expensive to use under Win95).

- changed the www receive code to use recv() rather than fdopen on
  the socket fd.  sockets aren't files under windows so this won't
  work and, anyway, recv is simpler and faster.

- the directory traversal code used for cache loading was very unix
  specific.  replaced it with a tcl procedure that uses tcl file
  globbing to get cache file names then calls a new C routing
  load_cache_entry() to validate & load one cache file.

- replace bcopy/bzero calls with memcpy/memset calls since former isn't
  portable to windows or most posix systems.

- added error announcement dialog box with optional traceback to the
  startup processing (otherwise you can't tell what went wrong under

- made the internal help file generation use the same tcl2c scheme
  as the internal tcl file generation (since any compiler that can't
  handle one can't handle the other, e.g., Microsoft's VC4.x).

- made the output-characters-instead-of-strings mode of tcl2c be a -c
  flag rather than a compile time option.

- tried to simplify the makefiles by using suffix rules for the html
  to c & tcl to c conversions and by using VPATH to locate the files.
  (this required a bit of renaming to rationalize the html vs. ehtml
  names and file vs. array tcl names.)

- Bug fixes:
   - rearranged several error msg printers that did "fprintf" followed
     by 'perror' (the fprintf will wipe out errno).
   - got rid of some debugging 'puts' statements in start_media_tool.
   - fixed a few of the many gcc -Wall errors (ones that looked like
     they'd cause problems under windows or other architectures).
   - replace a very creative way of trying to turn a string into an
     ip address with a more mundane version that works.
   - rearranged the socket/bind/connect/setsockopt calls to follow the
     one and only sequence that windows will accept.
   - ran all the tcl code through tclCheck & tcl_cruncher to check
     brace, paren, quote, etc., matching.  This found a few errors
     that would have bitten someone under the right circumstances.
     (doing this required nuking some commented out, obsolete or debug
     code that fooled the checker).
   - fixed bug in tcl2c when CANDOBIGSTRINGS isn't defined -- wasn't
     adding null byte string terminator.
   - got rid of pointless bind to 0.0 in www recv code (it does nothing
     and microsoft gives an error when you do it).
   - made quit button do a 'write_cache' since doing it only when main
     window is destroyed can cause cache to not get written out.

2.2a11 31 May 96

- Change iconbutton to raise the button before invoking command like the
  normal tk button, so that if you click on "more info" and then dismiss
  the window you don't get an error when the web page finishes
- Delete the B2-Motion event to prevent accidental scrolling of the session
- Attempt (it doesn't work for unknown reason) to bind j and k to scrolling
  up and down in the session windows like in sd.
- Make the session redisplay sort case-insensitive
- Attempt to add popups for more buttons in the "new" interface
  (but the popups need to learn about iconbuttons)
- Make web status "Parsing" while parsing the page, and "Finished" only
  after done parsing
- Make "Invalid Content Type" message reflect the actual content type
  instead of the data of the last header that was parsed
- Implement "#xxx" anchors (use catch instead of foreach?)
- Indent <dd> and center <center> (sometimes)
- Partially implement <META HTTP-EQUIV> for "poor man's redirect"
- Parse </br> as <br> since Netscape allows it
- Allow comments with <!--stuff , the old code required a space
- Add "parsestr" function to parse out KEY=value or KEY="va l u e" pairs
- Impement full RFC1866 list of character elements, including &#nnn;
- Implement non-blocking connect for webto, keyed on #define NBCONNECT
  so it can be conditionalized per platform
- Use ~/.RTPdefaults if it exists to guess name and email
- Fix bug in tech_new's decision about configuring name and email
- Fix "Illegal Scope Value, Scope value must be between 0 and 255" error
  if you don't click on any scope-related buttons and just create a session.
- New preferences scheme.  Each panel of the preferences menu
  has its own function, named "pref_XXX", which takes several
  possible arguments:
        copyin          copy from sdr's variables to prefs(XXX_variable)
        copyout         copy from prefs(XXX_variable) to sdr's variables
        defaults        set the prefs(XXX_variable) to default values
        create window width height
                        create the user interface using window as your
                        top level & make sure your widget matches the
                        width and height
        save file       output tcl commands to file to set the sdr
                        variables to their current values, e.g.
                        puts $file [list set webproxy $webproxy]
  One thing to potentially add is "verify", e.g. make sure all values
  are within their allowed range (like no empty phone numbers allowed)
- Added listening to the sd address, conditionalized on
- Fix typo; the ttl for the admin scope "site" is actually 15.
- Set ldata($aid,medianum) to 0 for sessions with no media.
  This was previously done in another section of the function
  but needs to be done in all cases.
- Add sdr_new_session_hook, which gets called whenever a new session
  is heard.  It may be in the wrong place.
- Fix confusion about exiting; if the ~/.sdr directory didn't exist then
  the cache directory wouldn't get created so the cache wouldn't get written.
- Fix UI weirdness in preferred session selection.  Two things:
  - The two listboxes could potentially scroll independently of each other.
  - Clicking on an entry near the bottom of the list can shorten the list,
    causing the listbox to scroll.  Fixed by adding the new value before
    deleting the old one.
- Change \r\n to \n only, and then change \r to \n to attempt to handle
  HTTP servers that return \r-seperated lines.  Also fixes the \r's
  at the end of <PRE> lines.
- Made anchors use "catch" instead of "foreach" to move to the mark
- Media setup bug in quick-call fixed.

2.2a10 16 May 96 mhandley
        Problem with backgrounded sdr writing startup messages fixed.
	Session display windows now disappear when the session times out.
	Xresources now work again (haven't been since the port to Tk4.0)
	pcm2/dvi2 now the default packetisation if a ptime attr is not
          specified (suggested by Van Jacobson)
	Bug preventing setting of midnight start times fixed.
	Bug preventing sdr starting sessions with several streams of the 
          same media fixed.
	Experimental code added to allow sdr to continue running after logout 
          and X display destruction ("-s" flag" specifies this)
2.2a9 9-12 May 96 mhandley
        Preferences user interface completely re-written to reduce
          complexity and number of windows required.
        Mechanism to specify preferered tools for each format added.
        UI Bug in specifying prefered sessions fixed.
        Can now copy from session information window into X cut buffer
          for phone numbers, addresses, etc.
        Cache files now get written on logout (failed X connection) as
          well as on hitting "quit" or announcing new sessions.
        A first attempt at sorting out keyboard (Tab) traversal of
          the user interface (as in Motif Compliance!)

	WWW browser patches from Bill Fenner:
	- The "display url" code tended to make the status "Finished" 
	  when it shouldn't be, so I started using a global variable to 
	  hold the status.
	- Parse and use "<BASE HREF=>" elements; our proxy server depends 
	  on this (e.g. if you ask our proxy server for it puts in  
	  <BASE HREF=""> instead 
	  of sending a  redirect.

2.2a8 8 May 96 mhandley
        command line option "-d1" added to aid debugging of announcement
        initialisation bug with ttl scoped sessions when new admin scope
          zones were defined is now fixed.
        initialisation bug in setting ttl for admin scoped sessions fixed.
        scrollbar now works again when specifying visible sessions in prefs.
2.2a7 4-6 May 96 mhandley
        Some parser checks that were missing added.
          - should prevent crashes with broken MCM sd announcements.
        Calendar interface redesigned to use pop-up fewer windows.
        Calendar now handles repeat times properly.
        Incoming invitations now force the popup of the invitation window
          on window managers like twm which nornally delay window placement.
        Minor changes to prevent sdr exiting in certain error conditions.
        long phone numbers bug fixed.
2.2a6 27 Apr 96 mhandley
        TkPlatformInit redefined to fix tk4.1b3 stupidity trying to
          explicitly load $TK_LIBRARY/tk.tcl
2.2a5 15-26 Apr 96 mhandley
        Basic SIP implementation added.
          allows users to invite other users to join advertised sessons
        Tcl SDP parsers added for SIP messages.
        Sensible error message now produced when DISPLAY is incorrect.
        better support for monochrome displays added
        plugin parser made more robust to odd spaces
        new session window made shorter and fatter
        moved cache files from .sdr dir to .sdr/cache dir.
        youremail variable added to plugin mechanism
        bug in plugin attr parser fixed (was preventing wb session launch)
        check added so sdr ignores announcements with later versions than 0
        repeat times now displayed properly in session display window
        window placement code improved - windows should get moved less
        added code to parse mailto URLs (but not to handle them yet)
        bug displaying sessions with no media fixed.
        bugs in recording startup fixed by Bill Fenner
2.2a4 15 Apr 96 mhandley
        macro/value pairs added to plugin mechanism
        vat protocol id's added back to vat startup script
        TCL bug in SunOS4 startup config worked around
2.2a3 15 Apr 96 mhandley
        stupid bugs in a2 fixed
2.2a2 12-13 Apr 96 mhandley
        plugin attributes now finished
        first pass at built-in "plugin" config files
        plugin help pages completed
        many little changes to WWW browser to improve appearance of help pages
        moved all platforms to tk4.1/tcl7.5
        some low-priority status messages now appear on sdr main 
          window rather than annoying little popups.
2.2a1 9-10 Apr 96 mhandley
        times with leading zeros bug fixed.
        really fixed(!): double clicking in main window produced a tcl error
        unknown media types now handled gracefully.
        bugs introduced with spec changes fixed.
        startup code for tools moved to separate modules and
          re-written to use plug-in config files to make configuration
            much more flexible and simpler.
          .sdr.tcl no longer used to configure session startup
        plugins used to configure menus when creating and editing sessions
        plugins used for fmt/proto name mapping in session listings
        response improved whilst writing cache file
        rtp mapping code from 2.2a0 removed
2.2a0 3 Apr 96 mhandley (telnet from California)
        Octal problem with changing date fixed but not tested.
        protocol fixes to support current SDP spec added.
2.1a12 30 Jan 96 mhandley
        fixed: double clicking in main window produced a tcl error
        ptime attribute added for audio and code to start up {pcm,dvi}{2,4}
        tearoffs removed from pull-right media attribute menus
2.1a11 26 Jan 96 mhandley
        Fixed bug in storing addresses for address allocation

       25 Jan 96
        FreeBSD port done.
        strerror() added to compat.c
        Union in a struct in_addr replaced with bit manipulation for
        4.4 BSD compatibility
        Added the ability to use a proxy server and a preference to go
        with it, and made the WWW browser error messages slightly nicer.
        Added (not-quite-fully-compliant-but-99%) HTML comment parsing, and
        got rid of an infinite loop that occurred on pages with bare &'s (see

       24 Jan 96 mhandley
        Lots of restructuring as a result of work on the sdr_server.

2.1a10 13 Jan 96 mhandley
        Simple interface added for session creation by less techincal users
        Simple interface added for session display
        Stupid timing hole resulting in session duplication while
        editing sessions now fixed.
        Default audio protocol changed to be RTP rather than VAT protocol
        Lots of restructuring in code to create new sessions.
        A little restructuring in session display code - now more robust to
        sessions being modified.
        .sdr_cache is now obsolete, and is replaced by the .sdr directory
          - this makes storing encrypted sessions cleaner
          - this also prevents incorrect editing of one session's cache entry
            corrupting others
        old .sdr_cache files get read (once) and then deleted.
        Calendar daily entries are now hot (popup the relevant session).
        Calendar daily entries now only get an arrowhead if they start or 
        finish on that day.
        Hot entries now get highlighted on entry (in all windows).
        Clicking on an already raised session in sdr main window now dismisses
        it - this makes it easier to browse sessions.
        WWW browser and help system now handle HTML escaped special chars
        WWW browser bug displaying HTML after last tag fixed
        WWW browser handing of Relative URLs from redirected pages now fixed.
2.1a9 9 Jan 96 mhandley
        Session Timeout timer-handler moved to start of session timeout code
        to improve robustness
        TCL session state time values were not all correctly set up for
        infinitely long sessions - now fixed.
        Session deletion code made more robust.
        Spurious error message with length 0 sdr_cache file fixed.
2.1a8 6 Dec 95 mhandley
        Stupid bug dealing with ad id comparisons fixed        
2.1a7 2 Dec 95 mhandley
        middle-button on empty session window error fixed.
        incorrect port bug when starting nv fixed
        some spurious debugging messages disabled
        tearoffs removed from menus (shouldn't have been there in the first
2.1a6 1 Dec 95 mhandley
        tk4.0 porting bug related to editing repeated sessions fixed
        spurious incorrect error messages removed.
        ballon help initial state was inconsistent with UI - now fixed.
        text-wrap problem is session popups fixed.
        calendar bug with times before 1am fixed
        editing sessions didn't clear previous text media - now fixed.
        tk4.0 porting bug in WWW browser image link code fixed.
        browser history list is now cleared on dismissing the window
         - thanks to Bill Fenner for reporting all these!
        BUGS and CHANGES now included in help pages.
2.1a5 30 Nov 95 mhandley
        Released sdr with sd compat timestamps rather than NTP timestamps
         - now fixed!
        sscanf problem in parser on HPUX fixed - thanks to Piers O'Hanlon
        session-id and session-versions fields were swapped - now fixed
        spurious error message when parsing indefinite sessions removed
2.1a4 28 Nov 95 mhandley
        TK_LIBRARY dependency had found its was back in with tk4.0 
        - removed again
        Paste to description box tk4.0 bug fixed
        Editing of ttl scoped sessions reset ttl - now fixed
        Stupid calendar month wrapping bug fixed
2.1a3 27 Nov 95 mhandley
        small changes related to porting to other platforms
2.1a2 25 Nov 95 mhandley
        Vat and vic default program names fixed
        Media labels in "new" window fixed
        Sdr.tcl split in two and cleaned up slightly
        Error checking improved in config files
        "new" window disabled "protocol" and "fmt" menus fixed
        setmediamode re-written
        UK scope shouldn't have been in as a default!
        Help pages greatly extended
        "Bugs" and "Changes" now automatically included in help system
        Debugging turned off by default
2.1a1 24 Nov 95 mhandley
        Ported to Tk4.0 - loads of stuff changed
        Protocol updated to draft-ietf-mmusic-sdp-01 subset
        IconButton re-written to work with tk4.0
        Horrible workaround added to prevent clash between iconbutton functions
          and widgets with same names (used to work in tk3.6)
        BalloonHelp modified to work with tk4.0
        Some new balloons added - more are needed
        WWW browser modified to work with tk4.0
        More preferences options added + preferences re-written somewhat
        Colour changed
        Vat and vic startup scripts totally re-written - now supports
         conf control channel for voice switching
        Tool to start for nv, ivs, and rtp audio now a preference selection.
        Allocates even ports for rtp
        Allocates prividged ports according to mrouted 3.6 rate limiter
        "new" protocol menu fixed
        Loads and loads of little things to do with tk4.0
2.0a10 17 Aug 95 mhandley
        stupid tcl bug with dates with leading zeros fixed
2.0a9 13 Jul 95 mhandley
        administrative scoping now works on multiple addresses/ports
2.0a8 12 Jul 95 mhandley
        administrative scoping added to interface - currently hardwired scopes
        but address dependant on scope working
2.0a7 12 Jul 95 mhandley
        nt added start_whiteboard procedure
        multiple multicast addresses were broken in parser by additional 
        strlen check in a4 - now fixed
2.0a6 11 Jul 95 mhandley
        Bugs fixed:
        Now handles main window being slightly offscreen (-ve geometries)
        Dhild windows now get moved completely onscreen (I hate TK sometimes!)
        Bug in session deletion fixed - sessions weren't getting deleted 
        Bug in www browser fixed - now handles any sized file
        Session deletion/selection with empty main window now doesnt
        cause an error
2.0a5 10 Jul 95 mhandley
        Corrected non-conformance with SDPv2 draft-01
        Transport protocol field added to "m=" fields
         - not compatible with previous versions!
2.0a4 4 Jul 95 mhandley
        First released version conforming to SDPv2 draft-01
2.0a3 20 Jun 95 mhandley
        too many changes to list!
        Handles most SDPv2 times and repeat times
        Handles SDPv2 fmt fields
2.0a2 19 May 95 mhandley
        built in WWW browser added to sdr
1.2a11 10 Mar 95 mhandley
        Recording functionality added
        Bug in day calendar popup fixed
1.2a10 2 Mar 95 mhandley
        Language internationalisation completed.  Now reads ~/.sdr.${LANG}
        file for internationalisation code.
1.2a9  1 Mar 95, mhandley
        Fixed bug in calendar - times before 10am didn't work!
        Language internationalisation partially added.
1.2a8, 28 Feb 95, mhandley
        Calendar label problem with German language labels fixed.
        Calendar day numbering problem with month 2 and month 3 fixed
        "unknown command .desc?.f.f0.desc" error fixed.