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 errors. 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" 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 mhandley@cs.ucl.ac.uk, fenner@parc.xerox.com, brezak@apollo.hp.com - 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 do. - 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 calendar. - 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 mhandley@cs.ucl.ac.uk - 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 mhandley@cs.ucl.ac.uk - calendar TCL bug fixed - thought I got all these last year, but no... 2.2a17 30 July 96 mhandley@cs.ucl.ac.uk - plugin mechanism extended to provide prototype support for audio redundancy and for dynamic payload types. 2.2a16 3 July 96 mhandley@cs.ucl.ac.uk - 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 batie@aahz.jf.intel.com - added extra checks to exit cleanly if we can't find our own hostname or address. 9 July 96 van@ee.lbl.gov - 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 fenner@parc.xerox.com - 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 224.2.128.0/17 instead of 224.2.0.0/16, so that the "admin scoped ttl" and the raw TTL addresses agreed. 2.2a14 2 July 96 fenner@parc.xerox.com - 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 van@ee.lbl.gov - 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 anyway) - 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 context. - 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 windows). - 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 fenner@parc.xerox.com - 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 loading. - Delete the B2-Motion event to prevent accidental scrolling of the session windows. - 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 LISTEN_FOR_SD - 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 ftp://ftp.parc.xerox.com/pub/net-research it puts in <BASE HREF="ftp://ftp.parc.xerox.com/pub/net-research/"> instead of sending a redirect. 2.2a8 8 May 96 mhandley command line option "-d1" added to aid debugging of announcement problems. 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} added. 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 fenner@parc.xerox.com 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 http://town.hall.org/). 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 place) 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 permanently. 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.